Eine Ungültige Pseudo-Selektor Gleich eine Ganze Selektor Ignoriert

0
36

Vielleicht kennen Sie auch dieses: wenn jeder Teil von einem Selektor ungültig ist, erlischt die gesamte Auswahl. Zum Beispiel:

div, span::Hintern {
Hintergrundfarbe: rot;
}

Obwohl div ist ein durchaus Gültiger Selektor, Spannweite:butt nicht, so ist die gesamte Selektor ungültig ist — weder divs noch span::butt-Elemente auf der Seite haben einen roten hintergrund.

Normalerweise ist das nicht ein furchtbar großes problem. Es kann sogar sein, dass sogar nützlich, je nach situation. Aber es gibt viele Situationen, in denen es irgendwie ein Schmerz in den, äh, <code>:butt.

Hier ein Klassiker:

::selection {
hintergrund: hellblau;
}

Für eine lange Zeit, die Firefox nicht verstehen, dass Auswahl und benötigt eine vendor-Präfix (::-moz-Auswahl) den gleichen Effekt zu erhalten. (Ist dies nicht mehr der Fall in den Firefox-62+, aber nehmen Sie die Stelle.)

In anderen Worten, dies war nicht möglich:

/* brechen würde für jeden */
::selection, ::-moz-selection {
hintergrund: hellblau;
}

Brechen würde, dass für Browser, die das verstehen ::Auswahl und Pause für Firefox, die nur verstanden werden können:- moz-Auswahl. Es machte ihn reif Gebiet für ein Präprozessor @mixin, das ist sicher.

Das war ärgerlich genug, dass die Browser haben sich anscheinend behoben. In einem Gespräch mit Estelle Weyl, habe ich gelernt, dass dies geändert wird. Sie schrieb in der MDN docs:

In der Regel, wenn es einen ungültigen pseudo-Elemente und pseudo-Klassen innerhalb einer Kette oder Gruppe von Selektoren, die ganze selector-Liste ist ungültig. Wenn ein pseudo-element (aber nicht pseudo-Klasse) hat eine -webkit – Präfix, Wie der Firefox-63, Blink, Webkit-und Gecko-Browsern nehme an, es ist gültig, keine ungültig, Selektor-Liste.

Dies ist nicht für jeden Selektor; es ist speziell für pseudo-Elemente. Doppelte Doppelpunkte (::).

Hier ist ein test:

Finden Sie den Stift, Ignoriert Ungültige Selecotrs??? von Chris Coyier (@chriscoyier) auf CodePen.

Ich würde sagen, dass eine positive Veränderung.