CSS: Alle Elemente ohne spezielles Elternelement
Sumafu
- css
Hallo,
ich habe eine kurze Frage zu CSS Selektoren. Und zwar habe ich in meinem verschiedene <code> Elemente, ein Teil davon direkt in einem <pre> Element, der andere Teil in beliebigen anderen Elementen. Jetzt würde ich über einen speziellen Selektor gerne genau die <code> Elemente ansprechen, die nicht direkt innerhalb eines <pre> Elementes liegen. Sonst müsste ich dem <code> Element allgemein die entsprechenden Styles geben und wieder aufheben, wenn es in einem <pre> steht; das wäre vom Seelektor her zwar wesentlich einfacher, aber auch deutlich unschöner.
Stellst Du Dir vielleicht sowas vor?
Stellst Du Dir vielleicht sowas vor?
Nein, das meinte ich nicht. Aber ich habe grade selbst eine Lösung gefunden:
*:not(pre) > code {}
Das nimmt alle code Elemente, die nicht direkt in einem pre liegen.
Yup, wollte gerade mein Fiddle noch updaten.
Die Krönung ist dann: nirgendwo ein pre in der Elternhierarchie, das ist kniffliger (bzw. würde nach dem lange ersehnten PARENT Selektor verlangen), aber das brauchst Du ja wohl auch nicht.
Gruß Rolf
Hej Rolf,
Die Krönung ist dann: nirgendwo ein pre in der Elternhierarchie, das ist kniffliger (bzw. würde nach dem lange ersehnten PARENT Selektor verlangen), aber das brauchst Du ja wohl auch nicht.
Wie wäre es, einfach das größer-als-Zeichen weg zu lassen? ;-)
Marc
Hallo,
Die Krönung ist dann: nirgendwo ein pre in der Elternhierarchie, das ist kniffliger (bzw. würde nach dem lange ersehnten PARENT Selektor verlangen), aber das brauchst Du ja wohl auch nicht.
Wie wäre es, einfach das größer-als-Zeichen weg zu lassen? ;-)
wollte ich auch erst vorschlagen - aber dann fiel mir auf, dass die Semantik von
:not(x) y
mehrdeutig ist. Selektiert das ein y-Element, das überhaupt keine Vorfahren vom Typ x hat, oder ein y-Element, das irgendwo in seiner Vorfahren-Kette ein Nicht-x-Element hat?
Letzteres wäre IMO recht nutzlos.
So long,
Martin
@@Der Martin
aber dann fiel mir auf, dass die Semantik von
:not(x) y
mehrdeutig ist.
Nö, die ist schon eindeutig.
Selektiert das ein y-Element, das überhaupt keine Vorfahren vom Typ x hat, oder ein y-Element, das irgendwo in seiner Vorfahren-Kette ein Nicht-x-Element hat?
Letzteres wäre IMO recht nutzlos.
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
Hej Der Martin,
Wie wäre es, einfach das größer-als-Zeichen weg zu lassen? ;-)
wollte ich auch erst vorschlagen - aber dann fiel mir auf, dass die Semantik von
:not(x) y
mehrdeutig ist. Selektiert das ein y-Element, das überhaupt keine Vorfahren vom Typ x hat, oder ein y-Element, das irgendwo in seiner Vorfahren-Kette ein Nicht-x-Element hat?
plonk
Letzteres wäre IMO recht nutzlos.
Aber logisch korrekt und somit kann man, wie @Gunnar Bittersmann vorgeschlagen hat, den :not-Selector auch gleich weglassen. Weia... - habe noch überlegt, warum sumafu auf diese naheliegende Lösung nicht selbst gekommen ist...
Ein Fettnäpfchen ist zwar kein Oskar, aber aarf ich das jetzt trotzdem behalten?
Marc
@@marctrix
Wie wäre es, einfach das größer-als-Zeichen weg zu lassen? ;-)
Und das *:not(pre)
dann ach gleich‽ ;-)
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
Hallo Marc,
Die Krönung ist dann: nirgendwo ein pre in der Elternhierarchie, das ist kniffliger (bzw. würde nach dem lange ersehnten PARENT Selektor verlangen), aber das brauchst Du ja wohl auch nicht.
Wie wäre es, einfach das größer-als-Zeichen weg zu lassen? ;-)
Da ich der Typ "erst probieren und dann nachdenken" bin, war das natürlich mein erster Versuch. Als es nicht klappte, bin ich dann auch auf die von euch hergeleitete Erklärung gekommen. Also - entweder die von Sumafu als "unschön" verurteilte Variante nehmen oder auf den - vielleicht in CSS7 kommenden - any-ancestor Selektor warten ;)
Gruß Rolf
@@Rolf b
oder auf den - vielleicht in CSS7 kommenden - any-ancestor Selektor warten ;)
Auf CSS7 kannst du lange warten. ;-)
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|