Ich blätterte in der MDN CSS-Dokumentation, aber ich sehe keine Combinators, die das Element auswählen können, das ich stylen möchte.Wie ändert man den CSS-Stil eines HTML-Elements nur, wenn ein bestimmtes Geschwisterelement existiert?
/* second-span red when first-span is present */
[first-span] ~ [second-span] {
color: red;
}
/* first-span blue ONLY when second-span is present */
/* HOW TO ? */
[first-span] /* combinator doesn't exist */ {
color: blue;
}
<p>
<span first-span="">I am #1</span><br>
<span second-span="">I am #2</span>
</p>
<p>
<span first-span="">I am #1</span>
<!-- no second span -->
</p>
<p>
<span second-span="">I am #2</span>
</p>
Ich versuche, einen Stil auf ein Element nur anzuwenden, wenn ein anderes angegeben Geschwister unter unter Geschwistern gefunden wird.
Im Snippet wird die erste CSS-Anweisung verwendet, um ein Element zu stylen, wenn die linke Hand im Auswahlausdruck unter den oberen Geschwistern gefunden wird. Aber es scheint, dass es keinen Kombinator gibt, der den gegenteiligen Effekt hat.
Wie kann ich das tun?
Sie können das eine oder das andere tun, wie Sie gerade haben oder flexbox mit der Eigenschaft 'order' verwenden, um die Elemente so zu organisieren, dass der benachbarte/allgemeine Geschwisterselektor funktioniert, aber Sie können beides nicht nur mit CSS machen . CSS kann nur Elemente auswählen, die nach oder in einem Element verschachtelt sind - es kann nicht im DOM zurückgehen. Ich denke, dass Sie Javascript benötigen, wenn Sie mit beiden Fällen umgehen können –
Wie dies https://codepen.io/mcoker/pen/JJgOOP –