Комбинации селекторов. Урок №4

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

Контекстный селектор

В этом виде комбинации используется взаимоотношение между тэгами "предок - потомок". Мы записываем несколько селекторов в строку через пробел, а после последнего задаем правило, которое будет относиться только к последнему селектору. А все, что мы записали перед ним – это для более точного указания элемента, к которому будет это правило применяться. Общий вид такой:

селектор1 селектор2 … селекторN{правило;}

Давайте рассмотрим пример такой комбинации. У нас есть код нашей страницы, и мы решили создать для него таблицу стилей и присоединить к документу способом "связывание". Вот код документа:
doc.JPG
А вот наша таблица стилей:
cont.JPG
Все правила Css лучше читать справа налево. Данное правило говорит, что для всех элементов <em>, у которых среди предков есть элемент <div>, причем, не важно, в каком он месте находится, цвет содержимого будет окрашен в красный цвет. В нашем случае правило будет применено для всех элементов <em>, кроме того, который содержит слово "Какой-то", так как у него нет среди предков тэга <div>. Если мы в таблице стилей перед <div> поставим, например, селектор body, то это правило будет читаться так: для всех элементов <em>, у которых среди предков есть элемент <div>, у которого, в свою очередь, среди предков есть элемент <body>, цвет содержимого будет окрашен в красный цвет. В этом случае произойдет то же самое – элемент <em>, содержащий слово "Какой-то" не будет окрашен, хоть у него и есть предок <body>. Но в нашем правиле четко сказано, что у <em> должен быть предок <div>, и у него среди предков есть <body>, а не <em>.
Важно понимать, что если мы запишем вот так: div body{color:red;}. То данное правило не будет применяться ни к чему, так как важна очередность.

Ужесточение требований

А вот если записать селекторы не через пробелы, а слитно, то мы ужесточаем требования:

div.page_.PNG

Здесь мы говорим, что красный цвет шрифта должен быть не просто во всех элементах <div>, а в тех, которым присвоен класс page.

Дочерний селектор

Этот вид комбинации использует взаимоотношение "родители и дети". Записываются селекторы в данной комбинации так:

селектор1>селектор 2 {правило;}

Давайте поменяем правило в нашей таблице стилей на такое:
dochern.JPG
В этом правиле говорится, что для всех элементов <em>, родителями которых являются тэги <p>, цвет содержимого будет окрашен в красный цвет. В нашем случае это правило будет применяться ко всем <em>, так как у всех этих тэгов в нашем документе есть родитель <p>.
К сожалению, данная комбинация не работает в браузерах IE 6 и ниже.

Соседний селектор

Этот вид комбинации использует взаимоотношение "братья". Записываются селекторы в этой комбинации двумя способами:

селектор1+селектор2{правило;}

Рассмотрим на примере. Изменим правило в нашей таблице стилей следующим образом:
sosedn1.JPG
Эта запись означает, что для всех элементов <p>, у которых ближайшим братом сверху или слева (в коде) является <h2>, содержимое будет окрашено в красный цвет. В нашем случае это самый первый элемент <p>.

Есть другой вид этой комбинации, который записывается так:

селектор1~селектор2{правило;}

Изменим правило в нашей таблице следующим образом:
sosedn2.JPG
Такая запись будет читаться следующим образом. Для всех <p>, у которых среди братьев сверху или слева (в коде) есть <h2>, содержимое будет окрашено в красный цвет. В данном случае у нас окрасится содержимое всех тэгов <p>, кроме того, который содержит "Внешний параграф".
Этот вид комбинации тоже не работает в IE 6 и ниже.

В этой же теме я хочу поговорить о таком понятии, как "группировка селекторов". Допустим, Вам нужно для нескольких селекторов записать одно и то же правило. Чтобы ускорить этот процесс, Вы можете перечислить эти селекторы через запятую, а потом записать для них правило. Например:
grupp.JPG
Если Вы захотите для какого-то селектора из этой комбинации дописать что-то еще, то Вы можете это сделать ниже в таблице Css.
grupp1.JPG

Вот и все по этой теме. В следующем уроке мы рассмотрим правила приоритетов в Css.

Комментарии: