Я пытаюсь придумать хороший стиль по умолчанию для <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>
нет ::after
? Я не могу найти в спецификации ничего, что указывало бы на это.