: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 та Chrome розміщують створений вміст всередині облямованого вікна, що є реалізацією hr
; вміст робить поле вище. Firefox розміщує вміст обох (!) Псевдоелементів після горизонтального правила, яке є його реалізацією hr
. Цей варіант ілюструє види проблем "взаємодії", про які йдеться у CSS 2.1.
Часто стверджується, що ці псевдоелементи не можна використовувати для порожніх елементів, оскільки їхні визначення HTML не дозволяють вмісту. Це помилка категорії. Правила синтаксису мови розмітки не обмежують те, що можна зробити в CSS
На закінчення, :after
і :before
наразі вони не використовуються для порожніх елементів (за винятком незначних hr
), але це, головним чином, пов'язано з реалізаціями і може змінитися в майбутньому.
<before></before>
" у джерелі.