2015-03-12 5 views
5

Soweit ich weiß CSS-Selektoren werden von rechts nach links ausgewertet, so body div * würde jedes Element auswählen, als schauen, die ein Elternteil vom Typ div und von denen, die ein Elternteil vom Typ Körper hat. Was ich unsicher bin, ist, wie dynamische Pseudoklassen in dieser Kette bewertet werden.Wird eine dynamische Pseudoklasse vor dem Rest des Selektors ausgewertet?

Wenn ich einen Selektor wie div *:hover hätte, wie würde die Auswertung sein?

  1. :hover =>* =>div
  2. * =>:hover =>div
  3. Eine andere Lösung, die ich hätte nicht gedacht, über
+2

Wahrscheinlich ist das implementierungsabhängig. – Oriol

+4

Die Auswertung sieht für eine typische Implementierung eher wie '*: hover' => ancestor' div' aus. Es gibt keine Vorstellung von der Ordnung innerhalb eines einzelnen Verbindungsselektors, außer der Reihenfolge, in der einfache Selektoren am einfachsten zu finden wären, und dies wird durch 1) welche einfachen Selektoren verwendet werden und 2) die Implementierung entschieden. Siehe diese Antworten: [\ [1 \]] (http://stackoverflow.com/a/5813672) [\ [2 \]] (http://stackoverflow.com/a/10108700) Beachten Sie, dass es sich bei dieser Frage um eine Frage handelt dynamische Pseudo-Klassen, was es interessanter macht, auch wenn es letztlich immer noch um Details der Implementierung geht. – BoltClock

Antwort

-1

Leider

* => :hover => div 

Die universelle s elector wird zuerst ausgewertet, was bedeutet, dass es alle Element im DOM betrachtet, dann überprüft, ob es in einem :hover Zustand ist. Schließlich sucht es für alle übereinstimmenden Elemente nach einem Elternteil div.

+1

Haben Sie Quellen/Artikel zu diesem Thema? –

Verwandte Themen