Конспект «Селекторы. Знакомство»
Селекторы позволяют точно указывать к каким элементам применять CSS-свойства.
Без использования селекторов стили можно задать при помощи атрибута style.
<p style="color: red;">...</p>Селекторы по тегам
Селекторы по именам тегов задают стили для всех элементов списка, изображений, абзацев и так далее. Эти селекторы содержат имя тега без символов < и >. Например:
li {
/* стили для элементов списка */
}Если правило относится сразу к нескольким селекторам, то селекторы перечисляются через запятую:
a, img {
/* стили для ссылок и изображений */
}Селекторы по классам
Можно задавать стили по классу элемента. Делается это с помощью такого селектора: .имя_класса. Например:
.first {
/* стили для класса first */
}Имена классов могут состоять из латинских символов, цифр и знаков - и _. Имя класса должно начинаться с латинской буквы.
Синтаксис CSS позволяет выбирать элементы одновременно по тегу и по классу или же элемент с двумя классами сразу. Для этого селектор составляется просто одной строкой из всех желаемых «частей» без пробелов.
В селекторе по тегу и классу первым пишется название тега, а потом идёт класс:
Если у элемента задано несколько классов, в HTML и в CSS-селекторе они могут идти в разном порядке.
<p class="green text"></p>
Количество классов в селекторе может быть любым:
Контекстные селекторы
Селектор может состоять из нескольких частей, разделённых пробелом, например:
p strong { ... }
ul .hit { ... }
.footer .menu a { ... }Такие селекторы называют контекстными или вложенными. Их используют для того, чтобы применить стили к элементу, только если он вложен в нужный элемент.
Читать их проще всего справа налево:
/* выбрать все теги strong внутри тегов p */
p strong { ... }
/* выбрать все элементы с классом .hit внутри тегов ul */
ul .hit { ... }
/* выбрать все ссылки внутри элементов с классом .menu,
которые лежат внутри элементов с классом .footer */
.footer .menu a { ... }Соседние селекторы
Соседние селекторы используются для расположенных рядом элементов.
Например, теги <li> в списке являются соседними по отношению друг к другу и вложенными в тег <ul>.
Соседние селекторы записываются с помощью знака +, например, селектор1 + селектор2. Стили применятся к элементу, подходящему под селектор2, только если сразу перед ним расположен элемент, подходящий под селектор1.
Пример. Есть два элемента списка:
<ul>
<li class="hit"></li>
<li class="miss"></li>
</ul>Селектор .hit + .miss применит стили к элементу с классом miss, так как перед ним есть элемент с классом hit.
Селекторы в CSS можно очень гибко комбинировать. В частности, можно комбинировать контекстные и соседние селекторы.
Дочерние селекторы
Любые элементы, расположенные внутри родительского элемента называются потомками. А дочерними элементами являются ближайшие потомки. Взгляните на пример:
<ul>
<li><span>...</span></li>
<li><span>...</span></li>
</ul>По отношению к списку <ul> элементы <li> являются дочерними элементами и потомками, а <span> — потомки, но не дочерние элементы.
Контекстные селекторы влияют на всех потомков.
Если нужно задать стили только для дочерних элементов используется дочерний селектор, в котором используется символ >. Например: ul > li или ul > li > span.
Псевдоклассы
Псевдоклассы — это дополнения к обычным селекторам, которые делают их ещё точнее и мощнее.
Псевдокласс добавляется к селектору c помощью символа :. Например:
a:visited { ... }
li:last-child { ... }
.alert:hover { ... }Псевдокласс first-child позволяет выбрать первый дочерний элемент родителя, а last-child — последний дочерний элемент. Например:
li:last-child { ... }С помощью псевдокласса nth-child можно выбирать теги по порядковому номеру. Синтаксис псевдокласса: селектор:nth-child(выражение). Выражением может быть число или формула. Например:
li:nth-child(2) { ... }
li:nth-child(4) { ... }
li:nth-child(2n) { ... }Селекторы с псевдоклассами хорошо сочетаются с контекстными селекторами.
Псевдоклассы состояний
Благодаря некоторым селекторам можно добавлять в интерфейс динамику и интерактивность.
Псевдокласс :hover позволяет выбрать элемент, когда на него наведён курсор мыши и кнопка мыши не нажата. Пример:
a:hover { ... }Существуют специальные псевдоклассы для ссылок:
:linkвыбирает ещё не посещённые ссылки.:visitedвыбирает посещённые ссылки.:activeвыбирает активные ссылки (кнопка мыши зажата на ссылке).
Псевдокласс :focus позволяет выбрать элемент, который в данный момент в фокусе.
Селекторы атрибутов
Селекторы атрибутов позволяют выбирать элементы по любым атрибутам. Они записываются с использованием квадратных скобок: элемент[атрибут]. Примеры селекторов:
input[checked] { ... }
input[type="text"] { ... }Первый селектор выберет поля формы, у которых есть атрибут checked, второй селектор выберет поля формы, у которых атрибут type имеет значение text.
Селектор по id
Для атрибута id существует специальный селектор. Он записывается с помощью символа #, например, #some-id.
На значение id распространяются те же ограничения, что и на имя класса. Также id должен быть уникальным на странице.