Über diese Website

Dieser Kasten steht auf jeder Seite in der linken Spalte. Was darin steht, änderst du in der Konfiguration unter Plugins — oder du schaltest ihn dort ab.

Über dieses Handbuch

Dieses Handbuch gehört zur Vorlage Example für QuartzControl. Es erklärt die Vorlage und führt zugleich alles vor, was sie kann.

Der Text hier kommt aus einer Markdown-Datei, nicht aus der Konfiguration.

Decoding CSS Selectors – has(not) vs not(has) (Polypane)

Decoding CSS Selectors – has(not) vs not(has) (Polypane)

Quelle / bibliografische Angaben

Blogartikel „Decoding CSS Selectors: :has(:not) vs :not(:has)“ im Blog des Browser-Tools Polypane. Doppelpunkte im Dateinamen weggelassen.

Kurzfassung

Der Artikel erklärt an einer Karte mit optionalem Bild, warum .card:has(:not(img)) fast jede Karte trifft und nur .card:not(:has(img)) die Karten ohne Bild.

Kernaussagen

  • Beide Selektoren haben die Spezifität (0,1,1), bedeuten aber Verschiedenes.
  • Lesetechnik: implizite Selektoren ergänzen, in Teile zerlegen, von innen nach außen lesen.
  • Steht eine Pseudoklasse ohne Selektor davor, ergänzt der Parser ein *: a :focus heißt a *:focus.
  • Bei :has() beziehen sich die Selektoren im Argument auf Nachfahren, bei :is() und :not() auf das Element selbst.
  • .card:has(*:not(img)): *:not(img) trifft den span — also jede Karte mit Text.
  • .card:not(.card:has(img)): trifft nur Karten, für die „hat ein Bild“ falsch ist.

Eigene Einordnung

Sehr gute, knappe Erklärung eines häufigen Fehlers. Verweist am Ende auf einen Artikel von Manuel Matuzović zum selben Thema, der hier nicht ausgewertet ist.

Verknüpftes Wissen

Offene Fragen

  • Autorenschaft nicht belegt.

Weiterlesen

Diese Seite gehört zu gui-test — der Beispielvorlage für QuartzControl. Ein Überblick über alle Bereiche steht auf der Startseite.

Auf einem schmalen Bildschirm ist die Navigation oben eingeklappt.