Что бы это ни стоило, Селекторы 4 теперь явно указывают1 авторы должны использовать двойные двоеточия для всех псевдоэлементов, включая псевдоэлементы CSS1 и CSS2 (выделено мной):
Поскольку CSS уровня 1 и CSS уровня 2 объединяли псевдоэлементы и псевдоклассы, используя синтаксис с одним двоеточием для обоих, пользовательские агенты также должны принимать предыдущую нотацию с одним двоеточием для псевдоэлементов уровня 1 и 2 (::before
, ::after
). , ::first-line
и ::first-letter
). Эта нотация совместимости не допускает никаких других псевдоэлементов. Однако, поскольку этот синтаксис устарел, авторам следует использовать синтаксис с двойным двоеточием уровня 3+ для этих псевдоэлементов.
Это означает, что единственное правильное использование синтаксиса с одним двоеточием сегодня — это если вам абсолютно необходима поддержка устаревшего браузера — единственный браузер, который здесь имеет значение, — это IE8 и старше. Если вы этого не сделаете, вам следует использовать синтаксис с двойным двоеточием для согласованности с новее псевдоэлементы, которые принимают только двойные двоеточия. Кроме того, совершенно бессмысленно использовать синтаксис с одним двоеточием, если, например, вы собираетесь применять свойства, которые в любом случае не поддерживаются IE8, такие как border-radius
или box-shadow
, к вашим ::before
и ::after
псевдоэлементы.
Я хотел бы верить, что Selectors 3, по крайней мере, подразумевал это в своем заявлении о том, что синтаксис с одним двоеточием не применяется к каким-либо более новым псевдоэлементам, но такие вещи указаны черным цветом и белый никогда никому не вредил, и приятно знать, что предстоящий стандарт делает именно это.
Кроме того, нет абсолютно никакой причины писать повторяющиеся правила с обеими нотациями в одной и той же таблице стилей (например, :before, :after { ... } ::before, ::after { ... }
), так как ни один из существующих браузеров не поддерживает новый синтаксис без поддержки старого.
1 Я говорю это, полностью осознавая, что, вероятно, это еще не было заявлено в то время, когда был задан этот вопрос — Май 2013 года WD, конечно же, нет.
person
BoltClock
schedule
15.02.2015
:
. В противном случае используйте::
. - person thirtydot   schedule 16.07.2013::
- person Oriol   schedule 16.07.2013