Ich habe ein Projekt, bei dem ich keinerlei Kontrolle über das Markup habe. Ich suche nach einer Möglichkeit, jede Instanz von 'class2' auszuwählen, die sofort einer Instanz von 'class1' folgt. Die folgende Strategie funktioniert, aber in einigen Fällen gibt es mehr als 20 Instanzen von 'class2' in einer Reihe und ich würde es vorziehen, diese große Unordnung in meinem Code zu vermeiden.
%Vor%... um folgendes zu gestalten
%Vor% Hier ist ein Stich im Dunkeln mit dem neuen :not
Selektor @spudley vorgeschlagen. Es sieht so aus, als ob es in Ordnung ist: Ссылка . Ich hoffe, die Syntax ist richtig. Bearbeitungen sind willkommen.
Und das meiste davon stammt aus @ Mookamafoobs Lösung. Ich habe keine Bearbeitung gesendet, wenn @mookamafoob der Verwendung des :not
Selektors vorzeitig widersprochen hat.
Bearbeiten: Entschuldigung für die fehlende Erklärung. Der letzte Teil versucht, jedes Element auszuwählen, das ein Geschwister von .class1
ist, das nicht .class2
hat, und setzt alle nachfolgenden Geschwister mit .class2
auf ihren ursprünglichen Zustand zurück. Das kann ziemlich verrückt sein, abhängig davon, wie viele Stile Sie anwenden.
Mein Vorschlag wäre, einfach den Stil für .class1 ~ .class2
festzulegen und ihn dann wieder auf den vorherigen Wert für p ~ .class2
zu setzen.
Es ist keine perfekte Lösung, weil der zweite Selektor dort nicht wissen kann, worauf er zurückgreift; Sie müssen es nur so einstellen, wie Sie es erwarten. Aber es sollte machbar sein.
Eine andere Idee, die ich hatte, war die Verwendung des Selektors CSS not
.
Damit können Sie zum leichteren ~
wechseln, um die Gruppe aller relevanten class2
-Elemente auszuwählen, aber not
und ~
, um diejenigen herauszufiltern, die dem <p>
-Tag folgen.
zB:
%Vor% Leider glaube ich nicht, dass diese Idee wie gezeigt funktionieren wird; Die Verwendung von ~
macht hier einige Kombinationen, die wir nicht wollen, die unabhängig von not
ausgewählt werden. Es kann möglich sein, einen not
Selektor zu finden, der funktioniert, aber ich habe es nicht geschafft, es in der Zeit zu entwickeln, die ich jetzt ausgegeben habe.
Vielleicht musst du die Logik umdrehen? Können Sie eine Regel für eine .class2 schreiben, die einer .class1 oder einer .class2 folgt, die einer .class2 folgt?
%Vor%Diese Regel würde in Ihrem Beispiel nicht auf das letzte div angewendet, da es keinem folgt.
Tags und Links css css3 css-selectors