Wie wähle ich das
-
Element aus, das ein direktes Elternteil des Anker Elements ist?
Als Beispiel würde mein CSS so aussehen:
li < a.active { property: value; }
Offensichtlich gibt es Möglichkeiten, dies mit JavaScript zu tun, aber ich hoffe, dass es eine Art Umweg gibt, der nativ für CSS Level 2 existiert.
Das Menü, das ich zu gestalten versuche, wird von einem CMS ausgespuckt, daher kann ich das aktive Element nicht zum
-
Element verschieben... (es sei denn, ich thematisiere das Menüerstellungsmodul, was ich lieber nicht tun würde).
7 Stimmen
Safari Tech Preview 137 hat heute die erste Implementierung des
:has()
Selectors eingeführt.4 Stimmen
Bald erhältlich: chrome!
0 Stimmen
Es wäre großartig, etwas zu haben, das auf eine Weise funktioniert, die kohärent mit JavaScript ist
el.parenteElement.parentElement...
wiea:active:parent:parent
oder sogara::active::parent::parent
, mit zwei Semikolons. Es wäre nicht nur kohärenter mit den vorhandenen Pseudoklassen, sondern auch intuitiver zu verwenden und einfacher zu verknüpfen, um bei Bedarf mehr als eine Ebene nach oben zu gelangen. Ich hoffe wirklich auf diese Art von Umsetzung, weil ich es wirklich nicht mag,:has(something)
zu verwenden: es bringt weder Logik noch intuitive noch ergonomische Benutzbarkeit mit sich. Der JavaScript-Weg ist besser, und bei weitem besser als :has().0 Stimmen
@willywonka Ich stimme zu. Ein beliebtes Tool (bin mir nicht sicher, ob ich es erwähnen darf) verwendet
:upward(x)
, wobeix
die Anzahl der DOM-Baumebenen angibt, die nach oben gehen soll. Diese Syntax ist ziemlich flexibel und funktioniert gut für diese Funktionalität.0 Stimmen
Ab heute unterstützen die meisten modernen Browser mit den neuesten Versionen wie: Chrome/Android Browser/Chrome für Android 105+, Edge 105+, Safari/Safari iOS 15.4+ und Opera 91+ es standardmäßig. Nur Firefox 103 bis 106 unterstützt es nicht standardmäßig, Sie müssen es aktivieren. Für mobile Geräte: (Opera Mini, Samsung Internet und Firefox Mobile unterstützen es noch nicht)
1 Stimmen
@Abzoozy Vielen Dank für das Update. Um deinen hilfreichen Kommentar zu verbessern, kannst du "es" definieren und auch angeben, welche Firefox-Einstellung diese Funktion aktiviert, bis sie offiziell eingeführt wird?
0 Stimmen
@RockPaperLz-MaskitorCasket Um den :has()-Selektor in den Firefox-Versionen 103 - 107 zu aktivieren: ` 1. Öffnen Sie den Firefox-Browser und geben Sie about:config ein. 2. Eine Warnseite wird angezeigt, klicken Sie auf die Schaltfläche "Risiko akzeptieren und fortfahren", um fortzufahren. 3. Ein Suchfeld mit dem Platzhalter "Nach Einstellungsname suchen" befindet sich oben, geben Sie "layout.css.has-selector.enabled" ohne doppelte Anführungszeichen ein. 4. "layout.css.has-selector.enabled" wird als falsch angezeigt, klicken Sie einfach auf die Schaltfläche rechts davon, um es auf wahr zu schalten. ` Sie können auch auf folgende Seite verweisen: support.mozilla.org/de-DE/questions/1139994
0 Stimmen
@Abzoozy Danke. Dieser Selektor wird so hilfreich sein, insbesondere für Projekte, bei denen das HTML nicht geändert werden kann.
2 Stimmen
Jetzt in Chrome 105 developer.chrome.com/blog/has-m105