selector

Типы селекторов CSS

Обычно при указании селекторов, мы пишем теги (имя тега и правило): div{color:red}.

Однако количество селекторов (т.е. тех меток, которые можно применять в наших документах) гораздо больше. Их всего 7 разных видов:

  • Тег — div{color:red}.
  • id — #back{color:red}. Т.е. когда в селекторах стоит решетка #, а за ней какое-то слово, значит мы ищем элемент с таким атрибутом id, и для него применяем правило. Значение атрибута id всегда уникальное. Лучше его применять в отдельных областях (шапка сайта, левая колонка, футер), т.е. создаем здесь элементы с уникальным атрибутом id.
  • Класс — .blue{color:blue}. Т.е. когда элементы в разных частях страницы имеют одинаковое оформление. Значение атрибута не уникальное, т.е. его можно применять у разных элементов. Можно применять пробелы, чтобы отделять друг от друга разные классы. Атрибут «класс» лучше использовать при описании элементов, которые могут повторяться в разных областях.
  • Атрибуты — [title]{background:#ffc;}. И так можно задавать правила для любого атрибута. В атрибутах можно указывать и точное значение (см. пример ниже) и правило для него. При этом учитывается регистр слов.
  • Псевдоклассы. «Псевдо» — потому, что в коде никаких классов нет. Это состояние вашего элемента, которое формируется в результате построения вашего документа (т.е. можно описывать элементы в зависимости от их месторасположения в документе) или от состояния, которое получается в результате ваших действий (например, навели мышкой на элемент, у него появился псевдокласс, увели мышку с элемента, всевдокласс исчез).
  • Псевдоэлементы. Это область, которой в реальности нет, она возникает только в момент построения данного элемента. Это области в наших элементах, которых специально в коде не выделяли. Например, есть параграф, и никаких дополнительных элементов внутри нет. А нам надо выделить первую строчку в нем. Для этого используют псевдоэлементы. Всего их 4 штуки — см. ниже примеры.
Тег
   div{color:red}
id
   #back{color:red}
Класс
   .news{background:#ccf;}
   .last{font-size:3em;}
Атрибут
   [title]{background:#ffc;}
   [title="заголовок первый"]{padding:50px;} - ищем заголовок и для него применяем правило
   [title~="заголовок"]{font-size:2em;} - ищем точное слово "заголовок" и для него применяем правило.
   [title*="вок"]{color:#f00;} - ищем символы, которые могут стоять в любом месте данного атрибута
   [href]{padding-left:20px; background-image:url(icon.png); background-repeat:no-repeat; margin-right:30px;} - ставим фоновую картинку без повторения
Псевдокласс
   :link {font-size:3em;} - непосещенная гиперсылка
   :visited {font-size:2em; background:#f00} - посещенная гиперссылка
   p:hover {background:#ccf;} - наведение мышки на параграф
   p:active {color:#ffc;} - при нажатии левой кнопки мыши на параграфе
   :focus {font-size:4em; color:#fff;} - когда элемент получает фокус (ссылки и элементы форм)
   p:first-child {} - дети параграфа, т.е. элементы, которые находятся внутри параграфа
Псевдоэлементы
   p:first-line{font-size:2em; color:#69c;} - первая линия параграфа
   p:first-letter{font-size:3em; color:#f60;} - первый символ
   p:after{content:"new"}
   p:before{content:"Att. "}

Объединение селекторов в CSS

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

Объединение tags + id
   p#in{color:#0f0;}
Объединение tags + class
   p.news{color:#0f0;}
   #in.begin{color:#0f0;}
Объединение class + class
   .news{color:#f00;}
   .news.last{color:#0f0;}
Объединение class + pseudo-class
   .news:hover{color:#0f0;}
Объединение class + pseudo-elements
   .news:first-letter{color:#0f0;}
Объединение class + attributes
   .begin[title]{color:#0f0;}
Объединение attributes + pseudo-elements
   [title]:first-letter{color:#0f0;}
Объединение pseudo-class + pseudo-class
   :first-child:hover{color:#0f0;}
   :visited:hover{color:#f00;}
Объединение attributes + attributes
   [class][title]{color:#0f0;}
Объединение tags + id + class + attributes + pseudo-class
   p#in.begin[title]:hover{color:#0f0;}
Объединение tags + id + class + attributes + pseudo-elements + pseudo-class
   p#in.begin[title][class][id]:first-child:first-letter{color:#0f0;}

Комбинаторы CSS

Часто на странице есть области, в которых могут встречаться одинаковые элементы. Их можно оформить с помощью атрибутов или классов (см. выше в статье). А как сделать наоборот? Например, на странице есть меню (навигация гиперссылки), и в контенте тоже присутствуют ссылки; оформлять эти элементы мы будем по-разному. Очевидно, надо ориентироваться на то, где они находятся: гиперссылки в левой части находятся в элементе с id=left, а элементы гиперссылки справа находятся в id=content.

Как учесть, что эти гиперссылки находятся в разных элементах? Для этого есть комбинаторы. Это учет того, где расположены элементы в вашем документе.

Примеры:

Контекстный селектор - предки-потомки
   div strong{font-size:3em;color:#f30;}
Дочерний селектор - родитель-ребенок (div - это родитель)
   div > strong{font-size:3em;color:#f30;}
Смежный селектор - ближайший смежный элемент сверху в коде
   h1 + p{font-size:3em;color:#f30;}
Смежный селектор - любой смежный элемент сверху в коде
   h1 ~ p{font-size:3em;color:#f30;}



Добавить комментарий

Ваш e-mail не будет опубликован.