Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
204
Добавлен:
10.05.2015
Размер:
11 Мб
Скачать
☆

Новые псевдоклассы

Псевдокласс n-го потомка

Достаточно мощный механизм, позволяющий дифференцировать потомков по номеру следования, в том числе циклически. Простейший и востребованный пример - чередование форматирования в абзацах или строках таблицы.

p:nth-child(odd) {

background-color: #ccc;

}

p:nth-child(even) {

background-color: #e7c;

}

Рис. 21.4. Применение селектора n-го потомка

В спецификации (см. http://www.w3.org/TR/css3-selectors/#nth-child-pseudo ) приводятся и более сложные примеры:

p:nth-child(4n+1) { color: navy; }

p:nth-child(4n+2) { color: green; }

p:nth-child(4n+3) { color: maroon; }

p:nth-child(4n+4) { color: purple; }

Очевидно, данные правила форматирования будут группировать элементы не парами, а четвёрками.

Псевдоклассы, близкие по смыслу - :nth-last-child, :nth-of-type(), :nth-last-of-type(), :first-of-type, :last-of-type, :only-child, :only-of-type, :empty, где last означает отсчёт с конца, а of-type - счёт только элементов указанного типа, например:

img:nth-of-type(2n) { float: left; }.

Другие псевдоклассы:

:target выбирает элемент, если переход по гиперссылке был сделан на него. Например, при переходе по ссылке http://example.com/html/top.html#section_2 элемент с id=section_2 будет соответствовать селектору :target.

:checked выбирает те элементы ввода radio и checkbox, которые отмечены пользователем.

:not(X) формулирует отрицание к простому CSS-селектору.

Новый обобщённый комбинатор соседства (~)

При его помощи можно выразить следующее отношение: элемент со свойствами, определяемыми селектором, где-то перед которым в ряду соседей находится элемент со свойствами, определяемыми другим селектором. Приведём пример с простыми селекторами: абзацы после заголовков различного уровня будут иметь различное форматирование (при условии, что они являются соседями заголовков, а не вложены в какой-либо дополнительный контейнер).

h1 ~ p {

color: Red;

font-size: 1.2em;

}

h2 ~ p {

font-size: 1em;

color: blue;

}

h3 ~ p {

color: green;

}

Рис. 21.5. Применение обобщённого комбинатора соседства

Ссылка: http://www.w3.org/TR/css3-selectors/#general-sibling-combinators

Программный интерфейс (api) селекторов

Селекторы предоставляют средства выборки элементов документа по разнообразным критериям - в первую очередь, для применения к ним стилей. Браузер, выполняя CSS-правило, эту выборку осуществляет, и формирует результат - список элементов. Новые спецификации позволяют использовать результирующий список в пользовательских сценариях (раньше для этого приходилось довольствоваться тремя методами - getElementById(), getElementsByName(), getElementsByTagName() и циклическим перебором элементов).

Для этого в спецификации (см. http://www.w3.org/TR/selectors-api/ ) предусмотрены методы querySelector() и querySelectorAll(), принимающие в качестве аргумента строки-селекторы (такие же, как в объявлениях стилей) и возвращающие либо первый элемент, соответствующий строке-селектору (первый метод) либо список всех соответствующих элементов (второй метод).

Листинг 21.4. Применение метода querySelectorAll() (html, txt)

Рис. 21.6. Применение API селекторов