Какие элементы поддерживают псевдоэлементы :: before и :: after?

Я пытаюсь придумать хороший стиль по умолчанию для s в HTML5 и пробовал следующее:

input::after         { display: inline; }
input:valid::after   { content: ' ✓ '; color: #ddf0dd; }
input:invalid::after { content: ' ✗ '; color: #f0dddd; }

Увы, :: после содержимое никогда не появляется. Это не проблема двойных и одинарных двоеточий для псевдоэлементов; Я пробовал оба. Это также не проблема с наличием псевдоэлемента и псевдокласса; Я пробовал это без : действительный и : недействительный . Я получаю такое же поведение в Chrome, Safari и Firefox (у Firefox нет псевдоклассов : valid и : invalid , но я пробовал без них.)

Псевдоэлементы отлично работают на

, ,

и < q> элементы - некоторые из которых являются блочными элементами, а некоторые встроенными.

Итак, мой вопрос: почему браузеры соглашаются с тем, что не имеют ] :: после ? Я не могу найти в спецификации ничего, что указывало бы на это.

22
задан BoltClock 4 October 2012 в 14:01
поделиться

1 ответ

Как вы можете прочитать здесь http://www.w3.org/TR/CSS21/generate.html ,: after работает только с элементами, имеющими содержимое (дерево документа). не имеет содержимого, а также или
.

29
ответ дан 29 November 2019 в 04:46
поделиться