Вверх страницы

Вниз страницы

Forix ФоРуМ рунета

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Forix ФоРуМ рунета » (x)HTML ★ WML ★ CSS » .т5. Псевдокласс :nth-child


.т5. Псевдокласс :nth-child

Сообщений 1 страница 3 из 3

1

Псевдокласс :nth-child нужен для формирования красивого маркированного списка. Его возможности распространяются не только на тег <ul> (список), но и на другие теги.

Синтаксис :nth-child

элемент:nth-child (VALUE) {
...
описание стиля
...
};
Где VALUE может принимать следующие выражения:

odd - нечетные номера элементов
even - четные номера элементов
число - номер, который нужно выделить относительно своего родителя
выражение - вида (an+b), где a и b целые числа, такое задание позволяет задать практически любую последовательность
Рассмотрим пример.

Пример №1. Красивая таблица

Самым популярным и наглядным примером является таблица. Сделаем так, чтобы первая строка была заглавной (выделим ее другим фоном), а все нечетные номера строк будут иметь другой цвет (более серый).

[html]
<html>
<head>
<style>
table.primer1 {
width: 90%;
border-spacing: 5px;
border-collapse: collapse;
}
table.primer1 tr:nth-child(2n+1) {
background: #ccc;
}
table.primer1 tr:nth-child(1) {
background: #000;
color: #fff;
}
</style>
</head>
<body>
<table class="primer1" border="1">
    <tr>
    <td>Название</td>
    <td>Столбец 1</td>
    <td>Столбец 2</td>
    <td>Столбец 3</td>
    </tr>
    <tr>
    <td>Строка 1</td>
    <td>Элемент 1,1</td>
    <td>Элемент 1,2</td>
    <td>Элемент 1,3</td>
    </tr>
    <tr>
    <td>Строка 2</td>
    <td>Элемент 2,1</td>
    <td>Элемент 2,2</td>
    <td>Элемент 2,3</td>
    </tr>
    <tr>
    <td>Строка 3</td>
    <td>Элемент 3,1</td>
    <td>Элемент 3,2</td>
    <td>Элемент 3,3</td>
    </tr>
...
</table>
</body>
</html>
[/html]

Код

Код:
<html>
<head>
<style>
	table.primer1 { 
	width: 90%; 
	border-spacing: 5px; 
	border-collapse: collapse;
	}
	table.primer1 tr:nth-child(2n+1) {
	background: #ccc; 
	} 
	table.primer1 tr:nth-child(1) {
	background: #000; 
	color: #fff; 
	}
</style>
</head>
<body>
	<table class="primer1" border="1">
    <tr>
    	<td>Название</td>
    	<td>Столбец 1</td>
    	<td>Столбец 2</td>
    	<td>Столбец 3</td>
    </tr>
    <tr>
    	<td>Строка 1</td>
    	<td>Элемент 1,1</td>
    	<td>Элемент 1,2</td>
    	<td>Элемент 1,3</td>
    </tr>
    <tr>
    	<td>Строка 2</td>
    	<td>Элемент 2,1</td>
    	<td>Элемент 2,2</td>
    	<td>Элемент 2,3</td>
    </tr>
    <tr>
    	<td>Строка 3</td>
    	<td>Элемент 3,1</td>
    	<td>Элемент 3,2</td>
    	<td>Элемент 3,3</td>
    </tr>
	...
	</table>
</body>
</html>

Примечание 1
Важно отметить, что на конечный результат оказывает влияние в какой последовательности будут написаны tr:nth-child(1) и tr:nth-child(2n+1). Если поменять их местами, то первая строка будет выделена серым цветом, а не черным, как предполагалось.

Примечание 2
Вместо аргумента (2n+1) в tr:nth-child(2n+1) можно было написать значение odd.

0

2

Пример №2. Последовательность одинаковых ячеек
Все строки начиная с 5ой строки будут выделены серым фоном. Для этого нужно написать запись nth-child(n+5).

[html]
<html>
<head>
<style>
table.primer2 {
width: 90%;
border-spacing: 5px;
border-collapse: collapse;
}
table.primer2 tr:nth-child(n+5) {
background: #ccc;
}
table.primer2 tr:nth-child(1) {
background: #000;
color: #fff;
}
</style>
</head>
<body>
<table class="primer2" border="1">
    <tr>
    <td>Название</td>
    <td>Столбец 1</td>
    <td>Столбец 2</td>
    <td>Столбец 3</td>
    </tr>
    <tr>
    <td>Строка 1</td>
    <td>Элемент 1,1</td>
    <td>Элемент 1,2</td>
    <td>Элемент 1,3</td>
    </tr>
    <tr>
    <td>Строка 2</td>
    <td>Элемент 2,1</td>
    <td>Элемент 2,2</td>
    <td>Элемент 2,3</td>
    </tr>
    <tr>
    <td>Строка 3</td>
    <td>Элемент 3,1</td>
    <td>Элемент 3,2</td>
    <td>Элемент 3,3</td>
    </tr>
...
</table>
</body>
</html>
[/html]

Код

Код:
<html>
<head>
<style>
	table.primer2 { 
	width: 90%; 
	border-spacing: 5px; 
	border-collapse: collapse;
	}
	table.primer2 tr:nth-child(n+5) {
	background: #ccc; 
	} 
	table.primer2 tr:nth-child(1) {
	background: #000; 
	color: #fff; 
	}
</style>
</head>
<body>
	<table class="primer2" border="1">
    <tr>
    	<td>Название</td>
    	<td>Столбец 1</td>
    	<td>Столбец 2</td>
    	<td>Столбец 3</td>
    </tr>
    <tr>
    	<td>Строка 1</td>
    	<td>Элемент 1,1</td>
    	<td>Элемент 1,2</td>
    	<td>Элемент 1,3</td>
    </tr>
    <tr>
    	<td>Строка 2</td>
    	<td>Элемент 2,1</td>
    	<td>Элемент 2,2</td>
    	<td>Элемент 2,3</td>
    </tr>
    <tr>
    	<td>Строка 3</td>
    	<td>Элемент 3,1</td>
    	<td>Элемент 3,2</td>
    	<td>Элемент 3,3</td>
    </tr>
	...
	</table>
</body>
</html>

0

3

Разница nth-child и nth-of-type
Псевдокласс nth-of-type делает практически то же самое, что и nth-child, то есть если бы мы в рассматриваемых примерах выше писали его, то ничего бы не изменилось.

Синтаксис nth-of-type такой же:

элемент:nth-of-type (VALUE) {
...
описание стиля
...
};
В чем же разница?

Псевдокласс nth-of-type ведет отчет количества элементов конкретного типа. Например

<style>
p:nth-child(2) { // первый вариант
background: #ccc;
}
p:nth-of-type(2) {  // второй вариант
background: #777;
}
</style>

<h1></h1>
<p>Первый Абзац</p>
<p>Второй Абзац</p>
В случае первого варианта, будет выделен цветом Первый абзац.

Во втором варианте все более предсказуемо, будет выделен цветом второй абзац. Все дело в подсчете. nth-of-type считает количество тега <p>

Примечание
Есть также и другие важные псевдоклассы, которые основываются на выборе конкретных элементов:

:first-of-type
:last-of-type
:nth-last-of-type
:only-of-type

0


Вы здесь » Forix ФоРуМ рунета » (x)HTML ★ WML ★ CSS » .т5. Псевдокласс :nth-child


создать форум