:before
и :after
визуализация внутри контейнера
и не может содержать другие элементы.
Только псевдоэлементыбыть определенным (или, точнее, только поддерживаемым) на элементах контейнера.Потому что способ их визуализации - внутри самого контейнера как дочернего элемента.input
не может содержать другие элементы, поэтому они не поддерживаются.button
с другой стороны, это также элемент формы, поддерживает их, потому что это контейнер других подэлементов.
Если вы спросите меня, отображает ли эти два браузера эти двапсевдоэлементы на неконтейнерных элементах, это ошибка и нестандартное соответствие.Спецификация напрямую говорит о содержимом элемента ...
Спецификация W3C
Если мы внимательно прочитаем спецификацию , то на самом деле говорится, что они вставлены внутри aсодержащий элемент:
Авторы определяют стиль и расположение сгенерированного содержимого с помощью псевдоэлементов: before и: after.Как указывают их имена, псевдоэлементы: before и: after указывают местоположение содержимого до и после содержимого дерева документа элемента.Свойство content в сочетании с этими псевдоэлементами определяет, что вставляется.
Видите? дерево документа элемента содержимое .Насколько я понимаю, это означает в контейнере.