2015-01-12 8 views
5

Selector wieCss Pseudo-Klassen ohne Selektor, ist es in Ordnung?

.some-class :first-child 

, die im Inneren .some-class Werken das erste Kind wählt, wie in allen Browsern zu erwarten, auch im IE8.

Mit der Option 'Daten reduzieren' von Google Chrome wird ein Leerzeichen zwischen .some-class und :first-child entfernt und das CSS durch Anwenden von Stilen auf das Element .some-class selbst zerstört. In anderen Fällen wie .class1 .class2 Chrome hält den Raum intakt. Wahrscheinlich betrachtet es den Raum zwischen .some-class und :first-child als nicht-semantischen Raum, weil er denkt, dass es keine Pseudo-Klasse ohne irgendeinen Selektor geben kann.

Aber ich habe den Standard überprüft und es sagt nirgendwo, dass Pseudo-Klasse einen Selektor haben muss. Zur gleichen Zeit enthalten alle Beispiele mit Pseudo-Klassen einen Element-Selektor, wie zum Beispiel

p:first-child 

. Ist dieser CSS-Selektor falsch oder gibt es in Chrome einen Fehler bei der Reduzierung der Datennutzung?

+0

"Es gibt einen Fehler in Chrome" Datennutzung reduzieren "" <- Dies. –

+0

Wow, das kannst du wirklich nicht erfinden. Das ist IE9-Level-Unsinn. – BoltClock

Antwort

2

:first-child gilt als Standalone-Selektor und dies scheint ein Fehler in der mobilen Version von Chrome zu sein. Das können wir mit W3C's CSS Validator bestätigen.

:first-child { background: #F00; } 

Herzlichen Glückwunsch! Kein Fehler gefunden.

In der Tat, aufgeführt alles im Selektoren Abschnitt der Selectors Level 3 specification gilt als Standalone-Selektor. Ich stelle mir vor, dass die Beispiele für :first-child auch einen Element-Selektor enthalten, um Verwirrung zu vermeiden und zu zeigen, wie es auf diesem bestimmten Element verwendet werden kann.

+0

@ james-donelly danke für die ausführliche Antwort! Ich habe das Problem an Google gemeldet und einen Link zu dieser SO-Frage hinzugefügt. – snovity

+1

Eine Pseudoklasse ist alleine gültig, weil sie ein einfacher Selektor ist, genau wie ein Klassenselektor oder ein ID-Selektor allein gültig ist. Ein Selektor, der nicht mit einem Typenselektor beginnt, hat stattdessen einen impliziten '*' Selektor. Dazu gehören Pseudo-Elemente (z. B. '*,: vor,: nach {box-sizing: border-box;}'). – BoltClock

1

Ich würde vermuten, dass es ein Fehler ist. Sie sollten * .some-Klasse um ihn zu arbeiten mit der Lage sein: first-child