:before
y :after
Rendering innerhalb eines Containers
und <input> können keine anderen Elemente enthalten.
Pseudo-Elemente können nur auf Containerelementen definiert werden (oder besser gesagt, sie werden nur unterstützt). Denn die Art, wie sie gerendert werden, ist innerhalb der Container selbst als untergeordnetes Element. input
können keine anderen Elemente enthalten und werden daher nicht unterstützt. A button
auf der anderen Seite, das auch ein Formularelement ist, unterstützt sie, weil es ein Container für andere Unterelemente ist.
Wenn Sie mich fragen, ob ein Browser tut diese beiden Pseudo-Elemente auf Nicht-Container-Elementen anzeigen, ist dies ein Fehler und eine Nicht-Standardkonformität. Die Spezifikation spricht direkt über Elementinhalte...
W3C-Spezifikation
Wenn wir sorgfältig lesen die Spezifikation es heißt tatsächlich, dass sie eingefügt werden innerhalb ein enthaltendes Element:
Autoren spezifizieren den Stil und die Position des generierten Inhalts mit den :before und :after Pseudo-Elementen. Wie ihre Namen andeuten, geben die :before und :after Pseudo-Elemente die Position des Inhalts vor und nach dem Inhalt des Dokumentbaums eines Elements an. Die Eigenschaft "content" gibt in Verbindung mit diesen Pseudo-Elementen an, was eingefügt wird.
Sehen Sie? den Dokumentenbaum eines Elements Inhalt . Nach meinem Verständnis bedeutet dies innerhalb einen Behälter.
1 Stimmen
Wenn Sie absolut keine Kontrolle über den HTML-Code haben, versuchen Sie, die
border-color
derinput
stattdessen. Ich finde, das erregt mehr Aufmerksamkeit.