Я пытаюсь придумать хороший стиль по умолчанию для <input>
s в HTML5 и попробовал следующее:
input::after { display: inline; }
input:valid::after { content: ' ✓ '; color: #ddf0dd; }
input:invalid::after { content: ' ✗ '; color: #f0dddd; }
Увы, содержимое ::after
никогда не появляется. Это не проблема с двойным или одинарным двоеточием для псевдоэлементов; Я пробовал оба. Также не проблема иметь псевдоэлемент и псевдокласс; Я пробовал без :valid
и :invalid
. Я получаю такое же поведение в Chrome, Safari и Firefox (в Firefox нет псевдоклассов :valid
и :invalid
, но я пробовал без них).
Псевдоэлементы прекрасно работают с элементами <div>
, <span>
, <p>
и <q>
, некоторые из которых являются блочными, а некоторые встроенными.
Итак, мой вопрос: почему браузеры согласны с тем, что <input>
s не имеют ::after
? Я не могу найти ничего в спецификации, что указывало бы на это.