Селектор для всех элементов в div. Комплексные селекторы. Селектор структурных псевдоклассов типа

07.09.2020 Программы

Что такое селектор в css – это описание того элемента или группы элементов, которое показывает браузеру какой элемент выбрать для применения к нему стиля. Давайте рассмотрим основные CSS селекторы.

1) .Х

.topic-title { background-color: yellow; }

CSS селектор по классу Х . Разница между id и классом в том, что один и тот же класс может быть у нескольких элементов на странице, а id всегда уникален. Классы стоит использовать для применения одного и того же стиля к нескольким элементам.

  • Chrome
  • Firefox
  • Safari
  • Opera

2) #X

#content { width: 960px; margin: 0 auto; }

CSS селектор по id . Знак решетки перед CSS селектором Х выбирает элемент у которого id = Х. Навешивая стили по id всегда стоит помнить, что он должен быть уникальным – только один такой id должен быть на странице. Поэтому лучше использовать селекторы по классам, комбинациям классов или названиям тэгов. Тем не менее, селекторы по id отлично применяются в автоматизированном тестировании, т.к. позволяют сразу взаимодействовать именно с нужным элементом и иметь уверенность что он только один такой на странице.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

3) *

* { margin: 0; padding: 0; }

CSS селектор всех элементов . Символ звездочки выбирает все элементы которые есть на странице. Многие разработчики используют его для того, чтобы убрать (обнулить) значения отступов (margin и padding) у всех элементов страницы. Тем не менее, на практике лучше так не делать потому, что этот CSS селектор довольно сильно грузит браузер перебором всех элементов на странице.

Символ * также можно использовать чтобы выделить все дочерние элементы:

#header * { border: 5px solid grey; }

В этом примере выделяются все дочерние элементы (потомки) элемента с #header . Но всегда стоит помнить, что этот селектор достаточно тяжел для браузера.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

4) X

a { color: green; } ol { margin-left: 15px; }

CSS селектор типа . Как выбрать все элементы одного типа, если у них нет ни id ни классов? Стоит использовать CSS селектор по типу элемента. К примеру, чтобы выбрать все упорядоченные списки на странице, используйте ol {...} как это показано выше.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

5) Х Y

li a { font-weight: bold; text-decoration: none; }

CSS селектор потомков или CSS селектор дочерних элементов используется чаще всего. Его используют если необходимо выбрать элементы определенного типа из множества дочерних элементов. Например, нужно выделить все ссылки, которые находятся в элементе li. В этом случае используйте этот селектор. Используя цепочки таких селекторов, всегда спрашивайте себя, а можно ли для выделения данного элемента использовать еще более короткую последовательность селекторов.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

6) Х + Y

div + p { font-family: "Helvetica Neue", Arial, sans-serif; font-size: 18px; }

Смежный селектор элементов выбирает только элемент типа Y, который идет сразу после элемента Х. В этом случае каждый параграф следующий сразу после каждого элемента div будет получать специальный тип и размер шрифта.

    Какими браузерами поддерживается:
  • IE7 +
  • Firefox
  • Chrome
  • Safari
  • Chrome

7) Х > Y

#content > ul { border: 1px solid green; }

CSS селектор потомков . Разница между селекторами Х Y и X > Y в том, что рассматриваемый CSS селектор будет выбирать только непосредственные дочерние элементы (выберет только прямых потомков). К примеру:

  • Элемент списка
    • Потомок первого элемента списка
  • Элемент списка
  • Элемент списка

CSS селектор #content > ul выберет только ul, который является прямым потомком блока div с id="container" . Он не выберет ul, являющийся потомком первого li. Это достаточно выгодный по скорости работы CSS селектор.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

8) Х ~ Y

ol ~ p { margin-left: 10px; }

Селектор сестринских (саблинговых) элементов менее строгий чем X + Y. Он выберет не только первый, но и все остальные элементы p, идущие за ol.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera
a:link { color: green; } a:visited { color: grey; }

Псевдо-класс:link используется для выбора всех ссылок, на которые еще не кликнули. Если же нужно применить определенный стиль к уже посещенным ссылкам, то для этого используется псевдо-класс:visited .

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

10) X

a { color: red; }

CSS селектор по атрибуту . В этом примере выбираются только те ссылки, у которых есть атрибут title.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

11) X

a { color: yellow; }
    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

12) X

a { color: #dfc11f; }

Звездочка означает, что искомое значение должно быть где-нибудь в атрибуте (в любой части атрибута href). Таким образом, будут выбраны и ссылки с https://www..stijit.. Ко всем выбранным ссылкам будет применен золотой цвет.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

13) X

a { background: url(path/to/external/icon.png) no-repeat; padding-left: 15px; }

На некоторых сайтах рядом со ссылками, ведущими на другие сайты, проставлены небольшие иконки со стрелочками, чтобы показать что это внешние ссылки. Карат “^” – это символ для обозначения начала строки. Таким образом для выбора всех тэгов, у которых href начинается с http, нужно использовать CSS селектор с каратом, как это показано на примере выше.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

14) X

a { color: green; }

Здесь используется регулярное выражение и символ $ для того, чтобы обозначить конец строки. В данном примере мы ищем все ссылки, которые ссылаются на картинки с расширением.jpg.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

15) X

a { color: green; }

Здесь мы применяем CSS селектор по пользовательскому атрибуту . Добавляем наш собственный атрибут data-filetype в каждую ссылку:

ссылка

Теперь, с помощью приведеного выше CSS селектора, можно выбирать все ссылки ведущие на картинки с любым расширением.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

16) X

Тильда (~) позволяет выделить определенный атрибут из списка атрибутов, разделенных пробелом. Можно прописать наш собственный атрибут data-info, в котором указывать несколько ключевых слов через пробел. Таким образом можно указать, что ссылка является внешней и ведет на изображение.

ссылка

С помощью такого приема мы можем выбирать элементы с нужными нам комбинациями атрибутов:

/* Выбрать элемент, атрибут data-info которого содержит значение external */ a { color: green; } /* Выбрать элемент, атрибут data-info которого содержит значение image */ a { border: 2px dashed black; }

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

17) X:checked

input:checked { border: 3px outset black; }

Этот псевдокласс выделяет только такие элементы, как checkbox или radio button, причем только когда они уже в отмеченном состоянии.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

18) X:after

Псевдоклассы:before и:after очень полезные – они создают контент до и после выбранного элемента.

Clearfix:after { content: ""; display: block; clear: both; visibility: hidden; font-size: 0; height: 0; } .clearfix { *display: inline-block; _height: 1%; }

Здесь при помощи псевдо-класса:after после блока с классом.clearfix создается пустая строка, после чего очищается. Этот подход используется если невозможно применить свойство overflow: hidden .

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

19) X:hover

div:hover { background-color: rgba(11,77,130,0.5); }

Применяет к элементу определенный стиль, когда на него наводится курсор мыши. Старые версии Internet Explorer применяют:hover только к ссылкам.

A:hover { border-bottom: 1px dotted blue; }

    Какими браузерами поддерживается:
  • IE6+ (В IE6 применимо только к ссылкам)
  • Chrome
  • Firefox
  • Safari
  • Opera

20) X:not(selector)

div:not(#content) { color: grey; }

Псевдокласс not (отрицания) бывает полезен когда, к примеру, нужно выбрать все div, за исключением того, который имеет id="content" .

По такому же принципу можно выбрать все элементы кроме p:

*:not(p) { color: blue; }

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

21) X::pseudoElement

p::first-line { font-weight: bold; font-size: 24px; }

Псевдоэлементы могут использоваться для применения стилей к фрагментам элементов – к примеру к первой строке абзаца или первой букве в слове. Применимо только к блочным элементам.

Выбор первой буквы параграфа:

P::first-letter { font-family: cursive; font-size: 30px; font-weight: bold; padding-right: 1px; }

Выбор первой строки в параграфе:

P:first-line { font-size: 28px; font-weight: bold; }

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera

22) X:first-child

ul li:first-child { border-top: none; }

Псевдокласс first-child выбирает только первого потомка родительского элемента. Часто используется чтобы убрать border в первом элементе списка. Этот псевдокласс был еще начиная с CSS 1 .

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari
  • Opera 3.5+
  • Android

23) X:last-child

ul > li:last-child { border-bottom: none; }

Псевдокласс last-child выбирает последнего потомка родительского элемента. Он появился только начиная с CSS 3 .

    Какими браузерами поддерживается:
  • IE9+ (IE8 поддерживает first-child, но не last-child. Microsoft (с))
  • Chrome
  • Firefox
  • Safari
  • Opera 9.6+
  • Android

24) X:only-child

div p:only-child { color: green; }

Псевдокласс only-child позволяет выбрать те элементы, которые являются единственными потомками для своих родителей.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox
  • Safari 3.0+
  • Opera 9.6+
  • Android

25) X:nth-child(n)

li:nth-child(3) { color: black; }

Выбирает дочерний элемент по номеру, указанному в параметре. Селектор nth-child принимает целое число в качестве параметра, однако отсчет ведется c 1, т.е. если нужно выбрать второй пункт списка, используйте li:nth-child(2) . Все псевдоклассы с использованием nth-child появились только начиная с CSS 3 .

    Какими браузерами поддерживается:
  • Chrome
  • Firefox 3.6+
  • Safari 3.1+
  • Opera 9.6+
  • Android 2.1+
  • iOS 2.0+

26) X:nth-last-child(n)

li:nth-last-child(2) { color: red; }

Если у вас большой список элементов в ul и нужно выбрать третий элемент с конца? Вместо того, чтобы писать li:nth-child(109) , можно использовать селектор последних потомков nth-last-child . Этот метод такой же как и предыдущий, но отсчет ведется с конца.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox 3.6+
  • Safari 3.1+
  • Opera 9.6+
  • Android 2.1+
  • iOS 2.0+

27) X:nth-of-type(n)

ul:nth-of-type(3) { border: 1px dotted black; }

Если на странице есть четыре неупорядоченных списка и нужно применить стиль только к третьему из них, не имеющему уникального id, стоит использовать nth-of-type.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox 3.6+
  • Safari 3.1+
  • Opera 9.6+
  • Android 2.1+
  • iOS 2.0+

28) X:nth-last-of-type(n)

ul:nth-last-of-type(3) { border: 2px ridge blue; }

Псевдокласс nth-last-of-type(n) предназначен для выбора n-ого элемента определенного типа с конца.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox 3.6+
  • Safari 3.1+
  • Opera 9.6+
  • Android 2.1+
  • iOS 2.0+

29) X:only-of-type

li:only-of-type { font-weight: bold; }

Псевдокласс only-of-type выбирает элементы, не имеющие соседей в пределах родительского элемента. К примеру можно выбирать все ul, которые содержат только одинокие li.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox 3.5+
  • Safari 3.1+
  • Opera 9.6+
  • Android 2.1+
  • iOS 2.0+

30) X:first-of-type

ul:first-of-type > li:nth-child(3) { font-style: italic; }

Псевдокласс first-of-type выбирает первый элемент заданного типа.

    Какими браузерами поддерживается:
  • Chrome
  • Firefox 3.5+
  • Safari 3.1+
  • Opera 9.5+
  • Android 2.1+
  • iOS 2.0+

Совокупность правил оформления (которые в свою очередь состоят из селекторов с блоком объявлений) примененных к определенным html тегам, за счет чего и формируется внешний вид сайта.

CSS селектор – это составная часть CSS правила отвечающая за определение конкретных html тегов, к которым будут применены стили оформления, прописанные в этом правиле.

Так, именно благодаря селекторам браузер понимает к каким именно элементам кода страницы нужно применять конкретные стили оформления.

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

Виды css селекторов

Как и предложения в тексте селекторы CSS бывают простыми и сложными. Разница между ними заключается в том, что сложные получаются из объединения нескольких простых и используются для более точной настройки конечного оформления ресурса.

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

Простые селекторы

  • Универсальный селектор – отвечает за выбор вообще всех элементов в документе. Задается звездочкой. Обычно применяется для обнуления стилей браузеров, установленных в них по умолчанию, чтобы у всех, кто будет заходить на сайт не уплыло оформление в случае использования каких-то собственных настроек браузера или же различных плагинов…

    * { какой- то стиль; }

  • Селектор типа – выбирает все теги, соответствующие определенному типу. Задается названием тега. Используется для задания общих правил оформления документа, к примеру, задать разные шрифты заголовкам и простому тексту документа.

    h1 { какой- то стиль; }

  • – применит правило цсс ко всем тегам с конкретным названием класса. Задается точкой с написанным сразу после нее названием класса. Пожалуй самый часто встречающийся в верстке селектор. Обычно используется, чтобы задавать различные стили оформления тегам одинаковым по типу, но разным по функциональному назначению.

    LeftColumn { какой- то стиль; }

  • Селектор идентификатора – применяется для оформления уникальных элементов на странице. Задается решеткой после которой идет название id. Используется, если нужно оформить один конкретный элемент страницы.

    #alertButton { какой- то стиль; }

  • – выбирает теги у которых присутствует атрибут. Задается названием атрибута в квадратных скобках. Может использоваться как для оформления группы тегов в которых просто присутствует заданный атрибут, так и для группы тегов в которых присутствует заданный атрибут с определенным значением.

    [ type] { какой- то стиль; } [ type= "submit" ] { какой- то стиль; } input[ type= "submit" ] { какой- то стиль; }

Сложные селекторы

  • Селектор потомка – выбор потомков (тегов находящихся внутри другого тега) элементов. Задается через пробел (родитель – пробел – потомок).

    div p { какой- то стиль; }

  • Селектор дочернего элемента - выбор элемента непосредственно вложенного в другой элемент. Задается символом «>» (родитель-галочка-дочерний элемент). Дочерний элемент отличается от потомка тем, что следует непосредственно после родителя (первый уровень вложенности). В то время как потомком считается любой тег внутри другого не зависимо от уровня вложенности.

    Sidebar> ul { какой- то стиль; }

  • Селектор сестринского элемента – выбирает тег идущий сразу после другого тега (не заключенный внутрь, а идущий далее). Задается плюсом (первый элемент – плюс – сестринский элемент). На практике используется редко. Обязательным условием применение является наличие общего родителя для всех элементов объединенным знаком «+».

    h1+ p { какой- то стиль; }

Псевдоклассы и псевдоэлементы

Вышеперечисленная классификация селекторов CSS зависела исключтиельно от разметки документа. Если мы хотим задать изменение внешнего вида элементов в зависимости от изменения его состояния на странице (к примеру смена цвета кнопки при наведении), то мы можем использовать селекторы псевдоклассов и псевдоэлементов .

  • Помните, что в отличие от html в CSS регистр букв имеет значение. Тоесть класс.active и.Active это не одно и то же! Они применятся к разным элементам, если таковые есть в документе.
  • Называйте селекторы для оформления так, чтобы потом в них не запутаться: .leftColumn – хорошее название, .left – зависит от ситуации, но уже неочень, .llll – фигня какаято, ты сам то скажешь не глядя на код откуда этот класс взялся?
  • Еще раз напоминаю – если элемент на странице один, такой весь уникальный, то для него используем id, если же есть вероятность, что появится еще один такой или же просто подобных элементов на странице несколько, то пользуйтесь для оформления классами.

Подводя итоги

Селекторы в CSS – это мощнейший инструмент идентификации определенных элементов страницы или же группы элементов объединенных конкретным признаком для дальнейшего применения к ним стилей оформления из блока объявлений относящегося к данному селектору.

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

Тема хоть и кажется крайне запутанной на первый взгляд становится простой и понятной после некоторого периода практики, подкрепленного качественной теорией.

Селекторы являются одной, если не самой важной частью CSS. Они формируют каскад и определяют, как стили должны применяться к элементам страницы.

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

CSS3 принёс новые селекторы, открывая целый новый мир возможностей и улучшений существующей практики. Здесь мы обсудим селекторы , как старые так и новые, а также как наилучшим образом их использовать.

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

Перед глубоким погружением в некоторые более сложные селекторы и те, которые предлагаются в CSS3, давайте взглянем на некоторые наиболее типовые селекторы на сегодня. Эти селекторы включают в себя селекторы типа, классы и идентификаторы.

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

H1 {...} .tagline {...} #intro {...}

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

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

Селектор потомка

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

Селектор article h2 является селектором потомка и выбирает только элементы

, которые находятся внутри элемента
. Обратите внимание, независимо от того, где живёт элемент

, пока он находится внутри элемента
, он всегда будет выбран. Кроме того, любой элемент

за пределами элемента
не будет выбран.

Ниже приведены заголовки, из которых выбраны строки 3 и 5.

Article h2 {...}

...

Этот заголовок будет выбран

Этот заголовок будет выбран

Прямой дочерний селектор

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

Например, article > p является прямым дочерним селектором только когда элементы

Находятся непосредственно внутри элемента

. Любой элемент <р> размещённый вне элемента
или вложенный внутри другого элемента, кроме
, не будет выбран.

Ниже, абзац на строке 3, является единственным прямым потомком его родителя

, поэтому и выбран.

Article > p {...}

Этот абзац будет выбран

Родственные селекторы

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

Общий родственный селектор

Общий родственный селектор позволяет выбрать элементы, которые будут отобраны на основе их родственных элементов, т. е. те, у которых один и тот же общий родитель. Они создаются с помощью символа тильды (~) между двумя элементами внутри селектора. Первый элемент определяет, что второй элемент должен быть родственным с ним, и у обоих должен быть один и тот же родитель.

Селектор h2 ~ p - это общий родственный селектор, он ищет элементы

Которые следуют после любых элементов

в том же родителе. Чтобы элемент

Был выбран, он должен идти после любого элемента

.

Абзацы в строках 5 и 9 выбраны, поскольку они идут после заголовка в дереве документа и у них тот же родитель, что и у родственного заголовка.

H2 ~ p {...}

...

Этот абзац будет выбран

Этот абзац будет выбран

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

Иногда может быть желательно иметь немного больше контроля, в том числе возможность выбрать родственный элемент, который следует непосредственно за другим родственным элементом. Соседний селектор будет выбирать только родственные элементы, непосредственно следующие за другим родственным элементом. Вместо символа тильды, как в случае с общим родственным селектором, соседний селектор использует символ плюс (+) между двумя элементами в селекторе. Опять же, первый элемент определяет, что второй элемент должен непосредственно следовать после него и быть ему родственным и у обоих элементов должен быть один и тот же родитель.

Взглянем на соседний селектор h2 + p . Будут выбраны только элементы

Идущие непосредственно после элементов

. У обоих также должен быть один и тот же родительский элемент.

Абзац на строке 5 выбирается, так как непосредственно следует после его родственного заголовка и у них один общий родительский элемент.

H2 + p {...}

...

Этот абзац будет выбран

Пример соседних селекторов

Input { display: none; } label, ul { border: 1px solid #cecfd5; border-radius: 6px; } label { color: #0087cc; cursor: pointer; display: inline-block; font-size: 18px; padding: 5px 9px; transition: all .15s ease; } label:hover { color: #ff7b29; } input:checked + label { box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); color: #9799a7; } nav { max-height: 0; overflow: hidden; transition: all .15s ease; } input:checked ~ nav { max-height: 500px; } ul { list-style: none; margin: 8px 0 0 0; padding: 0; width: 100px; } li { border-bottom: 1px solid #cecfd5; } li:last-child { border-bottom: 0; } a { color: #0087cc; display: block; padding: 6px 12px; text-decoration: none; } a:hover { color: #ff7b29; }

Селекторы атрибутов

Некоторые рассмотренные ранее типовые селекторы также могут быть определены как селекторы атрибутов, в котором элемент выбирается на основе значения class или id . Эти селекторы атрибутов class и id широко используются и довольно мощные, но это лишь начало. Другие селекторы атрибутов появились в последние годы, в частности, сделали большой скачок вперед вместе с CSS3. Теперь элементы могут быть выбраны на основе того, присутствует ли атрибут и какое значение он содержит.

Селектор наличия атрибута

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

A {...}

...

Селектор атрибута =

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

A {...}

...

Селектор атрибута *=

Когда мы пытаемся найти элемент на основе части значения атрибута, но не точного совпадения, может быть использован символ звёздочки (*) в квадратных скобках селектора. Звёздочка должна идти сразу после имени атрибута, непосредственно перед знаком равенства. Это означает, что следующее за ним значение только должно появиться или содержаться в значении атрибута.

A {...}

...

Селектор атрибута ^=

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

A {...}

...

Селектор атрибута $=

Противоположностью предыдущего селектора является селектор атрибутов, где значение оканчивается определённым текстом. Вместо использования символа ^ применяется знак доллара ($) в квадратных скобках селектора между именем атрибута и знаком равенства. Использование знака доллара означает, что значение атрибута должно заканчиваться указанным текстом.

A {...}

...

Селектор атрибута ~=

Иногда значения атрибутов могут быть расположены через пробел друг от друга, в которых только одно из слов должно подходить для создания выборки. В этом случае использование символа тильды (~) в квадратных скобках селектора между именем атрибута и знаком равенства означает значение атрибута разделённое пробелами, из которых одно слово точно соответствует указанному значению.

A {...}

...

Селектор атрибута |=

Когда значение атрибута разделено дефисом, а не пробелами, может быть использован символ вертикальной линии (|) в квадратных скобках селектора между именем атрибута и знаком равенства. Вертикальная линия означает, что значение атрибута может быть разделено дефисом, однако слова должны начинаться с указанного значения.

A {...}

...

Пример селекторов атрибутов

Ul { list-style: none; margin: 0; padding: 0; } a { background-position: 0 50%; background-repeat: no-repeat; color: #0087cc; padding-left: 22px; text-decoration: none; } a:hover { color: #ff7b29; } a { background-image: url("images/pdf.png"); } a { background-image: url("images/doc.png"); } a { background-image: url("images/image.png"); } a { background-image: url("images/audio.png"); } a { background-image: url("images/video.png"); }

Обзор селекторов атрибутов
Пример Название Описание
a Селектор наличия атрибута Выбирает элемент если данный атрибут присутствует.
a Селектор атрибута = Выбирает элемент, если значение данного атрибута в точности соответствует указанному.
a Селектор атрибута *= Выбирает элемент, если значение данного атрибута содержит по крайней мере один экземпляр указанного текста.
a Селектор атрибута ^= Выбирает элемент, если значение данного атрибута начинается с указанного текста.
a Селектор атрибута $= Выбирает элемент, если значение данного атрибута заканчивается указанным текстом.
a Селектор атрибута ~= Выбирает элемент, если значение данного атрибута разделено пробелами и точно совпадает с одним указанным словом.
a Селектор атрибута |= Выбирает элемент, если значение данного атрибута разделено дефисом и начинается с указанного слова.

Псевдоклассы

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

Псевдоклассы ссылок

Некоторые основные псевдоклассы включают в себя два псевдокласса, вращающихся вокруг ссылок. Это псевдоклассы :link и :visited и они определяют, что ссылка была или не была посещена. Чтобы задать стиль ссылки, которая ещё не была посещена, в игру вступает псевдокласс :link , а псевдокласс :visited задаёт стиль ссылок, которые пользователь уже посетил на основе их истории просмотра.

A:link {...} a:visited {…}

Псевдоклассы действия пользователя

К элементу могут динамически применяться основанные на действиях пользователей разные псевдоклассы, которые включают в себя :hover , :active и :focus . Псевдокласс:hover применяется к элементу, когда пользователь двигает курсор над элементом, наиболее часто это используется со ссылками. Псевдокласс:active применяется к элементу, когда пользователь приводит в действие элемент, например, при щелчке по нему. И, наконец, псевдокласс:focus применяется к элементу, когда пользователь сделал элемент точкой внимания страницы, часто с помощью клавишы Tab , переходя от одного элемента к другому.

A:hover {...} a:active {...} a:focus {...}

Псевдоклассы состояния интерфейса

Подобно ссылкам существуют также некоторые псевдоклассы, связанные с состоянием элементов пользовательского интерфейса, в частности, внутри форм. Эти псевдоклассы включают в себя :enabled , :disabled , :checked и :indeterminate .

Псевдокласс :enabled выбирает поля, которые включены и доступны для использования, а псевдокласс :disabled выбирает поля, которые содержат привязанный к ним атрибут disabled . Многие браузеры по умолчанию затемняют такие заблокированные поля для информирования пользователей о том, что поле не доступно для взаимодействия, однако их стиль может быть настроен по желанию через псевдокласс :disabled .

Input:enabled {...} input:disabled {...}

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

Input:checked {...} input:indeterminate {…}

Псевдоклассы структуры и положения

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

:first-child, :last-child и:only-child

Первые структурные псевдоклассы, которые вам скорее всего попадутся, это :first-child , :last-child и :only-child . Псевдокласс :first-child выберет элемент, если это первый ребёнок в родителе, в то время как псевдокласс :last-child выберет элемент, если он последний в родителе. Эти псевдоклассы идеально подходят для выбора первого или последнего элемента в списке и др. Кроме того, :only-child выберет элемент, если он является единственным элементом в родителе. В качестве альтернативы, псевдокласс :only-child может быть записан как :first-child:last-child , однако у :only-child ниже специфичность.

Здесь селектор li:first-child определяет первый пункт списка, в то время как li:last-child определяет последний пункт списка, таким образом, выбираются строки 2 и 10. Селектор div:only-child ищет

, который является единственным ребёнком в родительском элементе, без каких-либо других родственных элементов. В этом случае выбирается строка 4, т. к. это единственный
в данном пункте списка.

Li:first-child {...} li:last-child {...} div:only-child {...}

  • Этот пункт будет выбран
  • Этот div будет выбран
  • ...
    ...
  • Этот пункт будет выбран

:first-of-type, :last-of-type и:only-of-type

Нахождение первого, последнего и единственного ребёнка у родителя очень полезно и часто только это и требуется. Однако иногда вы хотите выбрать только первого, последнего или единственного ребёнка определённого типа элемента. К примеру, вы желаете выбрать только первый или последний абзац внутри статьи или, возможно, только изображение в статье. К счастью, в этом помогают псевдоклассы :first-of-type , :last-of-type и :only-of-type .

Псевдокласс :first-of-type выберет первый элемент своего типа внутри родителя, в то время как псевдокласс :last-of-type выберет последний элемент этого типа внутри родителя. Псевдокласс :only-of-type выберет элемент, если он является единственным такого типа в родителе.

В приведённом ниже примере псевдоклассы p:first-of-type и p:last-of-type выберут, соответственно, первый и последний абзацы в статье, независимо от того, являются ли они на самом деле первыми или последними детьми в статье. Строки 3 и 6 выбраны этими селекторами. Селектор img:only-of-type определяет изображение в строке 5, как единственное изображение появляющееся в статье.

P:first-of-type {...} p:last-of-type {...} img:only-of-type {...}

...

Этот абзац будет выбран

Этот абзац будет выбран

...

Наконец, есть несколько псевдоклассов структуры и положения, которые выбирают элементы, основанные на номере или алгебраическом выражении. Эти псевдоклассы включают в себя :nth-child(n) , :nth-last-child(n) , :nth-of-type(n) и :nth-last-of-type(n) . Все эти уникальные псевдоклассы начинаются с nth и принимают число или выражение внутри круглых скобок, которое обозначается символом n.

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

Использование чисел и выражений в псевдоклассах

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

Выражения для псевдоклассов бывают в формате an, an+b, an-b, n+b, -n+b и -an+b. То же самое выражение может быть переведено и читаться как (a×n)±b. Переменная a обозначает множитель, с учётом которого будут вычисляться элементы, в то время как переменная b обозначает, откуда будет начинаться или происходить отсчёт.

Например, селектор li:nth-child(3n) будет определять каждый третий элемент пункта списка. Использование этого выражения соответствует 3×0, 3×1, 3×2 и так далее. Как вы можете видеть, результаты этого выражения выбирают третий, шестой и каждый элемент кратный трём.

Кроме того, в качестве значений могут быть использованы ключевые слова odd и even . Как и следовало ожидать, они будут выбирать, соответственно, нечётные или чётные элементы. Если ключевые слова не привлекают, то выражение 2n+1 выберет все нечётные элементы, а выражение 2n выберет все чётные элементы.

Селектор li:nth-child(4n+7) определит каждый четвёртый пункт списка, начиная с седьмого пункта. Опять же, использование этого выражения эквивалентно (4×0)+7, (4×1)+7, (4×2)+7 и так далее. Результаты этого выражения приведут к выбору седьмого, одиннадцатого, пятнадцатого и каждого четвёртого элемента.

При использовании аргумента n без числа впереди, переменная a расценивается как равная 1. Селектор li:nth-child(n+5) выберет каждый пункт списка, начиная с пятого, оставив первые четыре пункта списка не выбранными. В выражении это разбирается как (1×0)+5, (1×1)+5, (1×2)+5 и так далее.

Для создания более сложных вещей могут быть задействованы отрицательные числа. Например, селектор li:nth-child(6n-4) будет отсчитывать каждый шестой пункт списка, начиная с -4, выбрав второй, восьмой, четырнадцатый пункты списка и так далее. Тот же селектор li:nth-child(6n-4) также может быть записан как li:nth-child(6n+2) , без использования отрицательной переменной b.

Отрицательная переменная или отрицательный аргумент n должен сопровождаться положительной переменной b. Когда аргументу n предшествует отрицательная переменная a, то переменная b определяет, насколько высоко будет достигнут отсчёт. Например, селектор li:nth-child(-3n+12) выберет каждый третий пункт списка в первых двенадцати пунктах. Селектор li:nth-child(-n+9) выберет первые девять пунктов списка, так как переменная a без заявленного числа по умолчанию равна -1.

:nth-child(n) и:nth-last-child(n)

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

Используя псевдокласс :nth-child(n) давайте взглянем на селектор li:nth-child(3n) . Он определяет каждый третий пункт списка, таким образом, будут выбраны строки 4 и 7.

Li:nth-child(3n) {…}

  • Этот пункт будет выбран
  • Этот пункт будет выбран

Использование другого выражения в псевдоклассе :nth-child(n) даст другую выборку. Селектор li:nth-child(2n+3) , к примеру, определит каждый второй пункт списка, начиная с третьего. В результате будут выбраны пункты в строках 4 и 6.

Li:nth-child(2n+3) {...}

  • Этот пункт будет выбран
  • Этот пункт будет выбран

Очередное изменение выражения, на этот раз с отрицательным значением, даст новый выбор. Здесь селектор li:nth-child(-n+4) определяет четыре верхних пункта списка, оставляя остальные пункты не выделенными, таким образом будут выбраны строки со 1 по 4.

Li:nth-child(-n+4) {...}

  • Этот пункт будет выбран
  • Этот пункт будет выбран
  • Этот пункт будет выбран
  • Этот пункт будет выбран

Добавление отрицательного числа перед аргументом n снова изменяет выбор. Здесь селектор li:nth-child(-2n+5) определяет каждый второй пункт списка из первых пяти пунктов, таким образом, будут выбраны пункты в строках 2, 4 и 6.

Li:nth-child(-2n+5) {...}

  • Этот пункт будет выбран
  • Этот пункт будет выбран
  • Этот пункт будет выбран

Изменение псевдокласса :nth-child(n) на :nth-last-child(n) переключает направление счёта, теперь подсчёт начинается с конца дерева документа. Селектор li:nth-last-child(3n+2) , к примеру, определяет каждый третий пункт списка, начиная со второго по последний, двигаясь по направлению к началу списка. Здесь выбраны пункты списка в строках 3 и 6.

Li:nth-last-child(3n+2) {...}

  • Этот пункт будет выбран
  • Этот пункт будет выбран

:nth-of-type(n) и:nth-last-of-type(n)

Псевдоклассы :nth-of-type(n) и :nth-last-of-type(n) очень похожи на :nth-child(n) и :nth-last-child(n) , однако вместо того чтобы считать каждый элемент внутри родителя псевдоклассы :nth-of-type(n) и :nth-last-of-type(n) учитывают только элементы своего собственного типа. Например, при подсчете абзацев в статье, псевдоклассы :nth-of-type(n) и :nth-last-of-type(n) пропустят любые заголовки,

или разные элементы, которые не являются абзацами, в то время как :nth-child(n) и :nth-last-child(n) будут считать каждый элемент, независимо от его типа, выбирая только те из них, которые соответствуют элементу в указанном селекторе. Кроме того, все те же возможные выражения, применяемые в :nth-child(n) и :nth-last-child(n) также доступны в псевдоклассах :nth-of-type(n) и :nth-last-of-type(n) .

Используя псевдокласс :nth-of-type(n) в селекторе p:nth-of-type(3n) мы можем определить каждый третий абзац в родителе, независимо от других родственных элементов внутри родителя. Здесь выбираются абзацы в строках 5 и 9.

P:nth-of-type(3n) {...}

...

Этот абзац будет выбран

...

Этот абзац будет выбран

Как и с псевдоклассами :nth-child(n) и :nth-last-child(n) , основное различие между :nth-of-type(n) и :nth-last-of-type(n) состоит в том, что :nth-of-type(n) считает элементы с начала дерева документа, а :nth-last-of-type(n) считает элементы с конца дерева документа.

Используя псевдокласс :nth-last-of-type(n) мы можем записать селектор p:nth-last-of-type(2n+1) , который определяет каждый второй абзац с конца родительского элемента, начиная с последнего абзаца. Здесь выбираются абзацы в строках 4, 7 и 9.

P:nth-last-of-type(2n+1) {...}

...

Этот абзац будет выбран

...

Этот абзац будет выбран

Этот абзац будет выбран

Псевдокласс:target

Псевдокласс :target используется для стилизации элементов, когда значение атрибута id совпадает с указателем фрагмента URI. Такой фрагмент в URI распознаётся с помощью символа решётки (#) и того, что непосредственно следует за ним. Адрес http://example.com/index.html#hello включает в себя указатель hello. Когда он совпадает со значением атрибута id у элемента на странице, к примеру,

Псевдокласс:empty

Псевдокласс :empty позволяет выбрать элементы, которые не содержат детей или текст. Комментарии, инструкции по обработке и пустой текст не считаются детьми и не рассматриваются как таковые.

Использование псевдокласса div:empty определит

без детей или текста. Ниже выбраны
в строках 2 и 3, поскольку они совершенно пустые. Даже несмотря на то, что второй
содержит комментарий, он не считается ребёнком, таким образом оставляя
пустым. Первый
содержит текст, третий содержит один пробел, а последний содержит дочерний элемент , таким образом, они все исключены и не выбраны.

Div:empty {...}

Привет

Псевдокласс:not

Псевдокласс :not(x) принимает аргумент и отфильтровывает выборку, которая будет сделана. Селектор p:not(.intro) использует псевдокласс :not для определения каждого абзаца без класса intro . Элемент абзаца определяется в начале селектора, затем следует псевдокласс :not(x) . Внутри скобок идёт селектор отрицания, в данном случае класс intro .

Ниже оба селектора div:not(.awesome) и :not(div) используют псевдокласс :not(x) . Селектор div:not(.awesome) определяет любой

без класса awesome , в то время как селектор :not(div) определяет элемент, который не является
. В результате выбирается
в строке 1, а также два раздела в строках 3 и 4. Единственный не выбранный элемент это
с классом awesome , так как он выходит за пределы двух псевдоклассов.

Div:not(.awesome) {...} :not(div) {...}

Этот div будет выбран
...
Этот раздел будет выбран Этот раздел будет выбран

Пример с псевдоклассами

...
Номер Игрок Позиция Рост Вес
8 Марко Белинелли G 6-5 195
5 Карлос Бузер F 6-9 266

Table { border-collapse: separate; border-spacing: 0; width: 100%; } th, td { padding: 6px 15px; } th { background: #42444e; color: #fff; text-align: left; } tr:first-child th:first-child { border-top-left-radius: 6px; } tr:first-child th:last-child { border-top-right-radius: 6px; } td { border-right: 1px solid #c6c9cc; border-bottom: 1px solid #c6c9cc; } td:first-child { border-left: 1px solid #c6c9cc; } tr:nth-child(even) td { background: #eaeaed; } tr:last-child td:first-child { border-bottom-left-radius: 6px; } tr:last-child td:last-child { border-bottom-right-radius: 6px; }

Обзор псевдоклассов
Пример Название Описание
a:link Псевдокласс ссылок Выбирает ссылки, которые не были просмотрены пользователем.
a:visited Псевдокласс ссылок Выбирает ссылки, которые были посещены пользователем.
a:hover Псевдокласс действия Выбирает элемент, когда пользователь наводит на него курсор.
a:active Псевдокласс действия Выбирает элемент, когда пользователь активирует его.
a:focus Псевдокласс действия Выбирает элемент, когда пользователь сделал его точкой внимания.
input:enabled Псевдокласс состояния Выбирает элемент в доступном состоянии.
input:disabled Псевдокласс состояния Выбирает элемент в отключенном состоянии, посредством атрибута disabled .
input:checked Псевдокласс состояния Выбирает флажок или переключатель, который был помечен.
input:indeterminate Псевдокласс состояния Выбирает флажок или переключатель, который не был помечен или не помечен, оставляя его в неопределённом состоянии.
li:first-child Структурный псевдокласс Выбирает первый элемент в родителе.
li:last-child Структурный псевдокласс Выбирает последний элемент в родителе.
div:only-child Структурный псевдокласс Выбирает единственный элемент в родителе.
p:first-of-type Структурный псевдокласс Выбирает первый элемент своего типа в родителе.
p:last-of-type Структурный псевдокласс Выбирает последний элемент своего типа в родителе.
img:only-of-type Структурный псевдокласс Выбирает единственный элемент своего типа в родителе.
li:nth-child(2n+3) Структурный псевдокласс Выбирает элемент, который соответствует заданному числу или выражению, считая все элементы с начала дерева документа.
li:nth-last-child(3n+2) Структурный псевдокласс Выбирает элемент, который соответствует заданному числу или выражению, считая все элементы с конца дерева документа.
p:nth-of-type(3n) Структурный псевдокласс Выбирает элемент, который соответствует заданному числу или выражению, считая только элементы этого типа с начала дерева документа.
p:nth-last-of-type(2n+1) Структурный псевдокласс Выбирает элемент, который соответствует заданному числу или выражению, считая только элементы этого типа с конца дерева документа.
section:target Псевдокласс:target Выбирает элемент, у которого значение атрибута id совпадает с указателем фрагмента URI.
div:empty Псевдокласс:empty Выбирает элемент, который не содержит каких-либо детей или текста.
div:not(.awesome) Псевдокласс:not Выбирает элемент не представленный заявленным аргументом.

Псевдоэлементы

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

Текстовые псевдоэлементы

Первыми реализованными псевдоэлементами были текстовые псевдоэлементы :first-letter и :first-line . Псевдоэлемент :first-letter определяет первую букву текста внутри элемента, в то время как :first-line определяет первую строку текста внутри элемента.

В демонстрации ниже первая буква абзаца с классом alpha задана большим размером шрифта и оранжевым цветом, так же как и первая строка абзаца с классом bravo . Эта выборка сделана с помощью текстовых псевдоклассов :first-letter и :first-line , соответственно.

Alpha:first-letter, .bravo:first-line { color: #ff7b29; font-size: 18px; }

Lorem ipsum dolor...

Integer eget enim...

Демонстрация текстовых псевдоэлементов

Псевдоэлементы, генерируемые содержимое

Псевдоэлементы :before и :after создают новые строчные псевдоэлементы только внутри выбранного элемента. Чаще всего эти псевдоэлементы используются в сочетании со свойством content , чтобы добавить незначительную информацию на страницу, однако, это не всегда так. Дополнительное применение этих псевдоэлементов может добавить компоненты пользовательского интерфейса на страницу без необходимости загромождать документ несемантическими элементами.

Псевдоэлемент :before создаёт псевдоэлемент до или впереди выбранного элемента, в то время как :after создаёт псевдоэлемент после или позади выбранного элемента. Эти псевдоэлементы выводятся вложенными внутри выбранного элемента, а не за его пределами. Ниже псевдоэлемент :after используется для отображения значения атрибута href у ссылок в круглых скобках после самой ссылки. Такая информация полезна, но, в конечном итоге, не всякий браузер поддерживает эти псевдоэлементы.

A:after { color: #9799a7; content: " (" attr(href) ")"; font-size: 11px; }

Искать в Интернете Изучите, как создать сайт

Демонстрация псевдоэлементов, генерируемых содержимое

Псевдоэлемент::selection

Псевдоэлемент ::selection определяет выделенную пользователем часть документа. Выделение затем может быть стилизовано, но только с помощью свойств color , background , background-color и text-shadow . Стоит отметить, что свойство background-image игнорируется. В то же время сокращённое свойство background может быть использовано для добавления цвета, но любые изображения будут игнорироваться.

Двоеточие (:) и двойное двоеточие (::)

Псевдоэлемент ::selection был добавлен в CSS3 в попытке отделить псевдоклассы от псевдоэлементов с помощью двойного двоеточия, которое было добавлено к псевдоэлементам. К счастью, большинство браузеров будут поддерживать оба значения, одиночные или двойные двоеточия у псевдоэлементов, однако псевдоэлемент ::selection всегда должен начинаться с двойного двоеточия.

При выделении любого текста в демонстрации ниже фон становится оранжевым благодаря псевдоэлементу ::selection . Также обратите внимание на ::-moz-selection . Префикс от Mozilla был добавлен, чтобы обеспечить лучшую поддержку для всех браузеров.

::-moz-selection { background: #ff7b29; } ::selection { background: #ff7b29; }

Демонстрация псевдоэлементов

Продолжить чтение

Arrow { background: #2db34a; color: #fff; display: inline-block; height: 30px; line-height: 30px; padding: 0 12px; position: relative; text-decoration: none; } .arrow:before, .arrow:after { content: ""; height: 0; position: absolute; width: 0; } .arrow:before { border-bottom: 15px solid #2db34a; border-left: 15px solid transparent; border-top: 15px solid #2db34a; left: -15px; } .arrow:after { border-bottom: 15px solid transparent; border-left: 15px solid #2db34a; border-top: 15px solid transparent; right: -15px; } .arrow:hover { background: #ff7b29; } .arrow:hover:before { border-bottom: 15px solid #ff7b29; border-top: 15px solid #ff7b29; } .arrow:hover:after { border-left: 15px solid #ff7b29; }

Поддержка селекторов в браузерах

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

CSS3.info предлагает инструмент CSS3 Selectors Test , который будет информировать вас о том, какие селекторы поддерживаются браузером. Также неплохой идеей будет проверить поддержку браузера непосредственно в нём.

На Smashing Magazine

  • Understanding:nth-child Pseudo-class Expressions на SitePoint
  • Taming Advanced CSS Selectors на Smashing Magazine
  • Последнее обновление: 21.04.2016

    Определение стиля начинается с селектора. Например:

    Div{ width:50px; /* ширина */ height:50px; /* высота */ background-color:red; /* цвет фона */ margin: 10px; /* отступ от других элементов */ }

    В данном случае селектором является div . Ряд селекторов наследуют название форматируемых элементов, например, div, p, h2 и т. д. При определении такого селектора его стиль будет применяться ко всем элементам соответствующих данному селектору. То есть выше определенный стиль будет применяться ко всем элементам

    на веб-странице:

    Селекторы CSS

    Селекторы CSS

    Здесь на странице 3 элемента div, и все они будут стилизованы:

    Классы

    Иногда для одних и тех же элементов требуется различная стилизация. И в этом случае мы можем использовать классы.

    Для определения селектора класса в CSS перед названием класса ставится точка:

    RedBlock{ background-color:red; }

    Название класса может быть произвольным. Например, в данном случае название класса - "redBlock". Однако при этом в имени класса разрешается использовать буквы, числа, дефисы и знаки подчеркивания, причем начинать название класса должно обязательно с буквы.

    Также стоит учитывать регистр имен: названия "article" и "ARTICLE" будут представлять разные классы.

    После определения класса мы можем его применить к элементу с помощью атрибута class . Например:

    Определим и используем несколько классов:

    Классы CSS

    Классы CSS

    Идентификаторы

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

    Определение стилей для идентификаторов аналогично определению классов, только вместо точки ставится символ решетки #:

    Идентификаторы CSS

    Основное содержимое

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

    Универсальный селектор

    Кроме селекторов тегов, классов и идентификаторов в css также есть так называемый универсальный селектор , который представляет знак звездочки (*). Он применяет стили ко всем элементам на html-странице:

    *{ background-color: red; }

    Стилизация группы селекторов

    Иногда определенные стили применяются к целому ряду селекторов. Например, мы хотим применить ко всем заголовкам подчеркивание. В этом случае мы можем перечислить селекторы всех элементов через запятую:

    Селекторы CSS

    CSS3

    Селекторы

    Группа селекторов

    Некоторый текст...

    Группа селекторов может содержать как селекторы тегов, так и селекторы классов и идентификаторов, например:

    H1, #header, .redBlock{ color: red; }

    CSS selectors define the elements to which a set of CSS rules apply.

    Basic selectors

    Universal selector Selects all elements. Optionally, it may be restricted to a specific namespace or to all namespaces.
    Syntax: * ns |* *|*
    Example: * will match all the elements of the document. Type selector Selects all elements that have the given node name.
    Syntax: elementname
    Example: input will match any element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent. "> element. Class selector Selects all elements that have the given class attribute.
    Syntax: . classname
    Example: .index will match any element that has a class of "index". ID selector Selects an element based on the value of its id attribute. There should be only one element with a given ID in a document.
    Syntax: # idname
    Example: #toc will match the element that has the ID "toc". Attribute selector Selects all elements that have the given attribute.
    Syntax: [ attr ] [ attr = value ] [ attr ~= value ] [ attr |= value ] [ attr ^= value ] [ attr $= value ] [ attr *= value ]
    Example: will match all elements that have the autoplay attribute set (to any value).

    Grouping selectors

    Selector list The , is a grouping method, it selects all the matching nodes.
    Syntax: A , B
    Example: div, span will match both and ) is the generic container for flow content. It has no effect on the content or layout until styled using CSS.">
    elements.

    Combinators

    Descendant combinator The (space) combinator selects nodes that are descendants of the first element.
    Syntax: A B
    Example: div span will match all elements that are inside a ) is the generic container for flow content. It has no effect on the content or layout until styled using CSS.">
    element. Child combinator The > combinator selects nodes that are direct children of the first element.
    Syntax: A > B
    Example: ul > li will match all element is used to represent an item in a list.">
  • elements that are nested directly inside a element represents an unordered list of items, typically rendered as a bulleted list.">