estoy tratando de llegar a un buen estilo por defecto para <input>
s en HTML5 y trató lo siguiente:¿Qué elementos admiten los pseudo-elementos :: before y :: after?
input::after { display: inline; }
input:valid::after { content: ' ✓ '; color: #ddf0dd; }
input:invalid::after { content: ' ✗ '; color: #f0dddd; }
Por desgracia, el contenido ::after
nunca aparece. No es un problema con dos puntos contra un solo punto para los pseudo-elementos; He intentado ambos. Tampoco es un problema tener un pseudo-elemento y una pseudo-clase; Lo he intentado sin :valid
y :invalid
. Puedo obtener el mismo comportamiento en Chrome, Safari y Firefox (Firefox no tiene los :valid
y :invalid
pseudo-clases, pero lo intentó sin ellos.)
Los pseudo-elementos funcionan bien en <div>
, <span>
, <p>
y <q>
elementos, algunos de los cuales son elementos de bloque y algunos están en línea.
Entonces, mi pregunta es: ¿por qué los navegadores aceptan que <input>
s no tienen un ::after
? No puedo encontrar nada en la especificación que indique esto.
Para el registro, los dos puntos dobles y dos puntos individuales estaban destinados a distinguir los pseudo-elementos y pseudo-clases ** **, porque la gente se Munging los dos juntos en un término genérico que se llama "pseudo-selectores ". – BoltClock