:before
и :after
не требуются для работы с заменяемыми элементами, а спецификации CSS не определяют, как они будут работать с ними, а концепция заменяемого элемента несколько расплывчата.
Спецификация CSS 2.1 ясно предполагает, что они могут работать для замененных элементов, просто говоря, что она не «полностью определяет», как именно. Это связано с тем, что у заменяемого элемента ожидается собственная визуальная визуализация, которая не контролируется CSS, тогда как псевдоэлементы должны что-то добавлять к содержимому элемента. В спецификации добавлено, что это будет определено «более подробно» в будущей спецификации, но пока этого не произошло.
Производители браузеров просто решили избежать проблем, не реализовав эти псевдоэлементы для некоторых элементов вообще.
Совершенно неясно, что означает «замененный элемент», и значение, похоже, несколько изменилось. Он часто интерпретируется как означающий то же, что и пустой элемент (элемент с EMPTY
объявленным содержимым, то есть элемент, который не может иметь никакого содержимого), но сам CSS 2.1 показывает образец таблицы стилей с селектором br:before
(хотя браузеры проигнорировали это, реализовав br
свои собственные путь). Можно утверждать, что все больше и больше элементов, по крайней мере частично, переходят в сферу рендеринга CSS. Например, input
элемент (включая его шрифт, цвета и т. Д.) В значительной степени контролируется с помощью CSS в современных браузерах.
Современные браузеры (Firefox, IE, Chrome) , кажется, не поддерживают :after
и :before
псевдо-элементы для других , чем пустых элементов hr
. Для получения hr
, IE и хром разместить сгенерированный контент внутри окаймленной коробки, которая является реализацией hr
; содержимое делает коробку выше. Firefox помещает содержимое обоих (!) Псевдоэлементов после горизонтального правила, которое является его реализацией hr
. Этот вариант иллюстрирует типы проблем «взаимодействия», которые упоминаются в CSS 2.1.
Часто утверждается, что эти псевдоэлементы нельзя использовать для пустых элементов, поскольку их определения HTML не допускают никакого содержимого. Это ошибка категории. Правила синтаксиса языка разметки не ограничивают то, что вы можете делать в CSS.
В заключение, :after
и :before
в настоящее время не могут использоваться для пустых элементов (за исключением незначительного hr
), но это в основном связано с реализациями и может измениться в будущем.
<before></before>
".