Подтвердить что ты не робот

Почему здесь два двоеточия? продолжительность:: до того

Это полная строка кода, на который я смотрю, и вот ее контекст: http://acidmartin.wordpress.com/2011/02/24/custom-crossbrowser-styling-for-checkboxes-and-radio-buttons

input[type="radio"] + span::before { content: ""; display: inline-block; width: 20px; height: 20px; background: url("sprite.png") no-repeat -20px 0; vertical-align: middle; }

У меня есть достойное понимание того, как это работает, но я не понимаю, почему есть два двоеточия, а не один между диапазоном и раньше.

Перед селектором, из того, что я прочитал, следует использовать один двоеточие.

http://www.w3schools.com/cssref/sel_before.asp

В w3c я не могу найти селекторов, у которых есть два двоеточия, и я не могу понять, почему у span был бы двоеточие, следующее за ним, в дополнение к двоеточию, предшествующему "до".

http://www.w3.org/TR/CSS2/selector.html

4b9b3361

Ответ 1

Это псевдоэлемент, определяемый CSS Selectors Level 3 spec:

Псевдоэлементы ::before и ::after могут использоваться для описания сгенерированного содержимого до или после содержимого элемента.

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

Оба синтаксиса будут работать в новых браузерах, но старые браузеры не узнают новый стиль ::.


Для более подробной информации вы можете посмотреть grammar из спецификации уровня 3, которая гласит:

'::' запускает псевдоэлемент, ':' псевдокласс

Ответ 2

Вы можете прочитать статью об этом здесь

Но в основном это значит различать псевдо-классы и псевдоэлементы. Стандарт css3 использует два двоеточия для псевдоэлемента, так как они соответствуют стандарту CSS2 только одного.

Один или два двоеточия будут работать, поскольку браузеры хотят обслуживать CSS2 и CSS3