Самоучитель CSS Справочник CSS Селекторы Стили по умолчанию Цвета CSS Единицы измерения
Селекторы CSS

CSS псевдо-класс :nth-child(n)

Поддержка браузерами

12.0+ 9.0+ 3.5+ 4.0+ 9.6+ 3.2+

Описание

Псевдо-класс :nth-child() выбирает дочерние элементы на основе их позиции (порядкового номера) внутри родительского элемента.

Синтаксис

:nth-child(число) { свойства }

В круглых скобках указывается аргумент, который может быть числом, ключевым словом или числовым выражением в виде an+b, где a и b целые числа, а n - счётчик, автоматически принимающий целые неотрицательные значения от 0 и больше: 0, 1, 2, 3, ... .

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

/* выбрать третий по счёту пункт списка */
ul li:nth-child(3) { color: red; }

Всего есть два возможных ключевых слова: odd (нечётные) и even (чётные). Они позволяют выбирать дочерние элементы имеющие чётные или нечётные порядковые номера:

/* выбрать все строки в таблице с нечётным порядковым номером */
tr:nth-child(odd) td { background-color: silver; }

Часть выражения "an" вычисляет позиции дочерних элементов по следующей формуле: число*n, так как n - счётчик, вместо него при вычислении автоматически подставляются числовые значения начиная с 0 и далее значение каждый раз увеличивается на единицу больше предыдущего: 0,1,2,3 и т.д. Допустим нам необходимо выбрать каждый третий пункт списка, для этого нам надо написать всего лишь 3n:

ul li:nth-child(3n) { color: red; }

Таким образом пункты списка будут выбираться по следующей формуле:
3 * 0 = 0 - ничего не выбрано
3 * 1 = 3-ий пункт
3 * 2 = 6-ой пункт
и т.д.

Часть выражения "b" позволяет указать с какой позиции следует начинать выбор элементов. Допустим нам необходимо выбрать каждый третий пункт списка начиная со второго пункта в списке, для этого нам надо написать следующее выражение 3n + 2:

ul li:nth-child(3n + 2) { color: red; }

Таким образом пункты списка будут выбираться по следующей формуле:
(3 * 0) + 2 = 2-ой пункт
(3 * 1) + 2 = 5-ый пункт
(3 * 2) + 2 = 8-ой пункт
и т.д.

Пример:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Пример</title>
    <style>
      tr:nth-child(odd) td { background-color: silver; }
    </style>
  </head>
  <body>

    <table>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
      <tr> <td>текст</td> </tr>
    </table>

  </body>
</html>

Результат данного примера:

текст
текст
текст
текст
текст
текст
текст
текст
текст
текст
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь