CSS :has()
der Parent Selector den wir 20 Jahre wollten
Endlich können wir Eltern-Elemente basierend auf ihren Kindern stylen. Ohne JavaScript. Ohne Klassen-Toggling. Pure CSS — und in allen Browsern verfügbar.
:has() ist der Selektor, auf den Frontend-Entwickler 20 Jahre gewartet haben. Drei Live-Demos zum direkten Antesten — alle ohne eine Zeile JavaScript.
- Nerd-Level
- Dein Browser
- wird geprüft
- Browser-Support
- ~96 %
- JavaScript in den Demos
- 0 Zeilen
Cards mit und ohne Bild unterscheiden
Die linke Card hat ein Bild, die rechte nicht. Mit :has(img) stylen wir beide unterschiedlich — ohne extra Klassen im HTML.
Card mit Bild
Diese Card hat ein img-Element. Dank :has(img) bekommt sie automatisch einen Teal-Border und einen Hover-Effekt.
Card ohne Bild
Kein Bild drin? :not(:has(img)) greift. Dezenter Border, kein spezieller Hover. Alles per CSS entschieden.
Noch eine Card mit Bild
Gleicher Effekt, automatisch. Der Browser entscheidet basierend auf dem DOM-Inhalt.
Früher: JavaScript mit classList.toggle() oder data-Attributen. Jetzt: 2 Zeilen CSS.
Form Validation per CSS
Das Label färbt sich rot wenn der Input invalid ist, grün wenn valid. Reagiert in Echtzeit — komplett ohne Event-Listener.
Tipp etwas in die Felder ein. Das Licht der Seite reagiert mit: CSS setzt nur die Farbe, das Licht selbst rechnet WebGL, ein kleines Skript reicht die Farbe weiter.
Navigation reagiert auf Suche
Klick in das Suchfeld — die Nav-Links blenden sich aus, das Suchfeld dehnt sich aus. Eine CSS-Regel, keine JavaScript-Logik.
Klick in das Suchfeld. Die Navigation blendet sich aus, das Suchfeld wird breiter. Pure CSS.
Chrome, Safari, Firefox.
Alle drei. Heute.
:has() ist seit Firefox 121 (Dezember 2023) in allen Major-Browsern verfügbar. Browser-Support: ~96 % aller User. Du kannst es heute einsetzen, ohne Polyfill.
Warum jetzt umstellen?
Jede Komponente, die heute noch JavaScript für state-abhängiges Styling nutzt, ist ein Kandidat für :has(). Weniger Code, weniger Bugs, bessere Performance.
- Cards mit dynamischem Layout abhängig von ihrem Inhalt
- Formulare mit Live-Validation-Feedback ohne JS
- Navigation die auf User-Aktionen reagiert
- Dark-Mode Toggle ohne body-Class-Switching
- Konditionale Animations-Trigger basierend auf DOM-Zustand
Webdesign aus Düsseldorf mit modernem CSS.
Wir bauen Websites die heutige Browser-Features nutzen — nicht die von 2018. Schneller, sauberer, wartungsarmer.