Я пытаюсь придумать хороший стиль по умолчанию для
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>
элементы - некоторые из которых являются блочными элементами, а некоторые встроенными.
не имеют ] :: после
? Я не могу найти в спецификации ничего, что указывало бы на это.
Как вы можете прочитать здесь http://www.w3.org/TR/CSS21/generate.html ,: after работает только с элементами, имеющими содержимое (дерево документа).
не имеет содержимого, а также
или
.