:beforey :afterrenderizar dentro de un contenedor
y <input> no puede contener otros elementos.
Los pseudoelementos solo se pueden definir (o mejor dicho, solo se admiten) en los elementos del contenedor. Porque la forma en que se representan está dentro del contenedor como un elemento hijo. inputno puede contener otros elementos, por lo tanto, no son compatibles. A, buttonpor otro lado, también es un elemento de formulario que los admite, porque es un contenedor de otros subelementos.
Si me preguntas, si un navegador hace mostrar estos dos pseudo-elementos en elementos no contenedores, que es un error y una conformidad no estándar. La especificación habla directamente sobre el contenido del elemento ...
Especificación W3C
Si leemos cuidadosamente la especificación, en realidad dice que se insertan dentro de un elemento contenedor:
Los autores especifican el estilo y la ubicación del contenido generado con los pseudoelementos: before y: after. Como indican sus nombres, los pseudoelementos: before y: after especifican la ubicación del contenido antes y después del contenido del árbol de documentos de un elemento. La propiedad 'contenido', junto con estos pseudo-elementos, especifica lo que se inserta.
¿Ver? El contenido del árbol de documentos de un elemento . Según tengo entendido, esto significa dentro de un contenedor.
border-colordelinput. Me parece más llamativo.