Почему здесь два двоеточия? продолжительность:: до того
Это полная строка кода, на который я смотрю, и вот ее контекст: 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
Ответы
Ответ 1
Это псевдоэлемент, определяемый CSS Selectors Level 3 spec:
Псевдоэлементы ::before
и ::after
могут использоваться для описания сгенерированного содержимого до или после содержимого элемента.
Это фактически то же самое, что синтаксис с одной колонкой, определенный спецификацией уровня 2. Спецификация уровня 3 вводит дополнительный двоеточие, чтобы различать псевдоэлементы и псевдоклассы (которые используют один двоеточие).
Оба синтаксиса будут работать в новых браузерах, но старые браузеры не узнают новый стиль ::
.
Для более подробной информации вы можете посмотреть grammar из спецификации уровня 3, которая гласит:
'::' запускает псевдоэлемент, ':' псевдокласс
Ответ 2
Вы можете прочитать статью об этом здесь
Но в основном это значит различать псевдо-классы и псевдоэлементы. Стандарт css3 использует два двоеточия для псевдоэлемента, так как они соответствуют стандарту CSS2 только одного.
Один или два двоеточия будут работать, поскольку браузеры хотят обслуживать CSS2 и CSS3