Gibt es mit CSS3 eine Möglichkeit, Elemente auszuwählen, die sich nicht innerhalb von Elementen mit einer bestimmten Klasse befinden? Im Beispiel unten wählen Sie beispielsweise class="bar"
-Elemente aus, die nicht innerhalb von Elementen von class="foo"
liegen (d. H.% Co_de%, aber nicht id="2"
)?
Laut MDN entspricht :not()
einem Element gemäß einigen Bedingungen. es wird kein "Nicht-Element" zurückgegeben.
Ich kenne keine Pseudoselektoren, um alle Eltern für eine bestimmte Bedingung zu testen, also würde ich persönlich einen Workaround wie diesen verwenden:
%Vor%.foo
selbst nicht beliebig tief ist Angenommen, .foo
ist eine bekannte Tiefe vom body
-Tag (Ihre Frage zeigt nur innerhalb von .foo
eine beliebige Tiefe an, oder unabhängig von .bar
in oder aus .foo
), dann funktioniert so etwas wie der folgende Code, um .bar
für jede beliebige Tiefe innerhalb oder außerhalb von .foo
auszuwählen. Für dieses erste Beispiel gehe ich davon aus, dass .foo
ein direktes Kind von body
ist, aber wenn dies nicht der Fall wäre, müsste der Code leicht modifiziert werden, um die passende Tiefe von .foo
zu erhalten (siehe zweites Beispiel). :
Sehen Sie eine Geige für den obigen Code.
Dies ist nur praktisch, wenn .foo
nicht zu tief verschachtelt ist, da .bar
positioning sowohl auf der gleichen Ebene wie .foo
als auch auf allen vorherigen höheren Ebenen berücksichtigt werden muss. Wenn also zum Beispiel .foo
ein Enkelkind von body
wäre, wäre Folgendes nötig:
Leider nicht, die einzige Möglichkeit, dies zum Laufen zu bringen, wäre die Verwendung der: not-Syntax und die Angabe von 1 Tiefenschicht nach Element- oder Klassennamen
Hier ist die Geige: Ссылка
html
%Vor%css:
%Vor%Tags und Links css css3 css-selectors