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