16 Punkte von GN⁺ 2025-09-30 | 3 Kommentare | Auf WhatsApp teilen
  • Eine praxisorientierte Übersicht über neu hinzugekommene oder breiter unterstützte CSS/HTML-Funktionen in diesem Jahr, die ein breites Spektrum von UI-Übergängen über Formulare und Typografie bis hin zu funktionalem CSS abdeckt
  • Zu den wichtigsten Neuerungen zählen Größenübergänge zu Schlüsselwörtern wie auto, HTML popover/Invoker sowie CSS @function und if(); viele davon werden zunächst vor allem in Chrome unterstützt, daher ist eine Strategie der progressive enhancement erforderlich
  • field-sizing für automatisch wachsende Eingabefelder, Custom Select, text-wrap: balance/pretty, linear()-Easing und shape()-Pfade verbessern visuelle Qualität und Benutzbarkeit mit wenig Aufwand
  • Mit Werkzeugen zur Werte- und Ablaufsteuerung wie erweitertem attr(), reading-flow zur Steuerung der Leserichtung und calc-size() wächst der Bereich von Designs, die sich allein mit CSS umsetzen lassen
  • Während Masonry, random(), margin-trim und Erweiterungen von View Transitions noch in Standardisierung oder Ausbau der Unterstützung sind, gelten Container Queries, :has() und dvh bereits als feste Grundlagen in der Praxis

Animate to Auto

  • Eine Funktion, die bei Elementen mit beliebiger Inhaltshöhe sanfte Übergänge zwischen festen Werten ↔︎ auto ermöglicht
    • Mit einer globalen Deklaration von interpolate-size: allow-keywords sind Übergänge wie height: 0 → auto erlaubt
    • Alternativ kann der Übergang auch ohne interpolate-size über calc-size() mit height: calc-size(auto, size) erfolgen
  • Der Vorteil besteht darin, fragile Workarounds wie max-height-Tricks oder Offscreen-Messung + JS-Animation zu ersetzen und dabei das eigentliche Layout beizubehalten
  • Der Support-Stand ist derzeit Chrome-zentriert; da Animationen eher ein nice-to-have sind, eignet sich PE (Progressive Enhancement) gut

Popovers & Invokers

  • Das HTML-Feature popover-Attribut verleiht beliebigen Elementen Öffnen-/Schließen-Verhalten samt passender JS-API und gehört zur Kategorie leichtgewichtiger Overlays, nicht zu Modals
    • Mit Invoker-Attributen ist eine deklarative Steuerung ohne JS möglich
  • Die Bedeutung liegt darin, dass Accessibility, Tastatur- und Fokusverwaltung bereits auf HTML-Ebene mitgeliefert werden und so das Risiko unvollständiger Implementierungen sinkt
  • Die Unterstützung ist bei Popover breit, bei Invoker zunächst Chrome-first; zudem gibt es Unterschiede bei Detailfunktionen wie popover="hint"
    • Da ein Polyfill verfügbar ist, lässt sich das Feature auch für essenzielle UX sinnvoll einsetzen

@function

  • Führt benutzerdefinierte Funktionen in das CSS-System von Wertfunktionen ein; in der Form @function --foo(--x) { result: ... } lässt sich gemeinsame Logik abstrahieren
  • Durch Reduktion von Duplikaten (DRY) und vereinfachte Deklarationen verbessern sich Lesbarkeit und Wartbarkeit
  • Die Unterstützung ist Chrome-first; falls sinnvoll, kann mit property: fallback und in der nächsten Zeile property: --func() ein graceful fallback umgesetzt werden
    • Zu beachten ist, dass es nicht kompatibel mit Sass-Funktionen ist

if()

  • Die erste Verzweigungsfunktion auf Wertebene in CSS: Bedingungen mit media(), supports() und style() lassen sich wie in einer Switch-Anweisung auflisten, wobei der erste passende Wert zurückgegeben wird
    • Beispiel: grid-template-columns kann je nach Breakpoint in einer einzigen Deklaration beschrieben werden
  • Der Effekt ist bessere Lesbarkeit und weniger Wiederholung; zudem passt die Funktion gut zu benutzerdefinierten @function-Definitionen
  • Die Unterstützung ist Chrome-first; empfohlen wird, zuerst einen Fallback-Wert zu deklarieren und damit das PE-Muster anzuwenden

field-sizing

  • Vorstellung der Eigenschaft field-sizing, mit der Eingabe- und Editierfelder passend zum Inhalt automatisch wachsen
    • Ein typischer Anwendungsfall ist die automatische Höhenanpassung von <textarea>, sie eignet sich aber auch für direktes Inline-Resize-UX
  • Die Unterstützung besteht in Chrome, für Safari ist eine Einführung geplant; bei Bedarf ist ein leichtgewichtiges JS-Ersatzverfahren möglich
    • Da es sich eher um eine UX-Verbesserung als um Kernfunktionalität handelt, eignet sich eine schrittweise Einführung

Custom Selects

  • Unterstützt nach explizitem Opt-in nicht nur das Styling des select-Aussehens, sondern die vollständige Anpassung der geöffneten Auswahl-UI selbst
  • PE funktioniert hervorragend: In nicht unterstützten Umgebungen fällt das Verhalten sicher auf das normale <select> zurück
  • Die Unterstützung ist Chrome-first; mit appearance: base-select und ::picker(select) lässt sich der Kontrollbereich erweitern

text-wrap

  • text-wrap: balance sorgt bei Überschriften und anderer großer Typografie für ausgewogene Zeilenlängen, während text-wrap: pretty auch im Fließtext Hurenkinder vermeidet und die Optik verbessert
  • Der Effekt ist bessere Lesbarkeit und höhere typografische Qualität, die sich ohne Aufwand sofort bemerkbar macht
  • Die Unterstützung ist bei balance breit, bei pretty zunächst Chrome und Safari, womit sich die Funktion gut für PE eignet

linear() easing

  • Anders als das Schlüsselwort linear erlaubt die linear()-Funktion die Definition präziser Easing-Kurven mit beliebig vielen Punkten und eignet sich besonders für komplexe Abläufe wie Bounce-Effekte
  • Während cubic-bezier() als Alternative eingeschränkt ist, bietet linear() eine feinere Timing-Kontrolle und wird voll unterstützt
  • Bei Bedarf kann auf benannte Easings oder cubic-bezier() als Fallback zurückgegriffen werden

shape()

  • Die shape()-Funktion ergänzt das bisherige path(), dessen Syntax auf Pixelwerte beschränkt und relativ schwer lesbar ist, und ermöglicht die Beschreibung beliebiger Pfade mit responsiven Einheiten und Custom Properties
  • Mit clip-path lassen sich beliebige Formen maskieren, mit offset-path Elemente entlang eines Pfads platzieren oder animieren; künftig ist auch die Kombination mit shape-outside vorgesehen
  • Die Unterstützung besteht in Chrome und Safari, in Firefox läuft sie hinter einem Flag; in der Praxis empfiehlt sich ein sauber gestalteter Fallback

More Powerful attr()

  • attr() unterstützt nun Typangaben, sodass sich nicht-textuelle Werte wie Zahlen oder Farben direkt aus HTML-Attributen lesen und als CSS-Werte verwenden lassen
  • Die Bedeutung liegt in einer Erweiterung von Mustern, bei denen Theme-Farben, Zähler oder Größen direkt aus dem Markup eingespeist werden
  • Die Unterstützung ist Chrome-first; empfohlen wird eine schrittweise Einführung zunächst bei visuellen Verbesserungen statt bei layoutkritischen Abhängigkeiten

Reading Flow

  • Einführung der Eigenschaft reading-flow, mit der sich auch in Layouts, bei denen visuelle und Quellreihenfolge auseinanderfallen, die Tab-Reihenfolge logisch korrigieren lässt
    • Bei einer Umordnung per Grid kann etwa mit reading-flow: grid-rows ein zum Layout passender Fokusfluss festgelegt werden
  • So lassen sich Accessibility-Risiken mit einer einzigen CSS-Deklaration verringern, was die Freiheit bei Layouts erhöht
  • Die Unterstützung ist Chrome-first; daher wird empfohlen, zu starke Neuordnungen bis zu breiterer Unterstützung zurückhaltend einzusetzen

Stuff to Keep an Eye On

  • Das Masonry-Layout wird derzeit noch in der Spezifikation geordnet; der Vorschlag item-flow könnte die Möglichkeiten für Layouts über Grid hinaus erweitern
  • Die Funktion random() wird bereits in Safari angeboten und ist nützlich für ausdrucksstarke variierende Designs
  • margin-trim ist nützlich, aber vor allem Safari-zentriert; sibling-index()/count() wird in Chrome bereitgestellt und eignet sich für staggered animations
  • Bei View Transitions gibt es mit view-transition-name: match-element; sowie der laufenden Entwicklung in Firefox positive Signale für Cross-Browser-Unterstützung
  • Die Vereinheitlichung von Multiplikation/Division in calc() mit gemischten Einheiten steht kurz vor dem Abschluss experimenteller Hürden, wodurch frühere Type-Conversion-Hacks seltener nötig sein dürften
  • Angesprochen wird auch das Fehlen von Versionsbezeichnungen wie „CSS4“ sowie eine Referenzliste mit neuen Funktionen der letzten fünf Jahre

Great Stuff to Remember

  • Container Queries und entsprechende Einheiten bleiben als größter Produktivitätsschub seit Media Queries weiterhin grundlegendes Handwerkszeug
  • :has() ermöglicht Eltern- und zustandsbasierte Selektion und bietet damit breite Einsatzmöglichkeiten, um komplexe kombinierte Selektoren allein mit CSS zu lösen
  • View Transitions, Anchor Positioning und Scroll-Driven Animations haben nun auch Safari erreicht, wodurch die Hürden für den Praxiseinsatz gesunken sind
  • Zusätzliche Viewport-Einheiten wie dvh sind inzwischen Teil des Baseline-Status, was die Stabilität mobiler Viewports verbessert

Code-/Anwendungsbeispiele im Überblick

  • Größenübergänge: global interpolate-size: allow-keywords oder beim Umschalten von Zuständen height: calc-size(auto, size) für Animationen auf Inhaltshöhe
  • Grid-Verzweigung: mit dem Muster if(media(...): Wert; ... else: Wert;) lassen sich Template-Spalten je Breakpoint in einer einzigen Deklaration bündeln
  • Custom Select: select, ::picker(select) { appearance: base-select } aktiviert einen benutzerdefinierten Picker
  • Bounce-Easing: animation-timing-function: linear( ... viele Punkte ... ) für fein abgestimmte Rückprall-/Dämpfungskurven
  • Clip-Pfad: clip-path: shape( ... ) für Maskierung von Formen auf Basis responsiver Proportionen

Leitfaden für den Praxiseinsatz

  • Bei Funktionen mit großen Unterschieden in der Browser-Unterstützung sollte die Einführung nach Fallback-first-Design sowie nach Wirkung im Verhältnis zum Einführungsaufwand erfolgen
    • Animationen, Typografie und visuelle Effekte sind gute PE-Kandidaten, während Fokus- und Tab-Reihenfolge als zentrale Accessibility-Themen erst bei breiter Unterstützung übernommen werden sollten
  • Eigene Funktionen und Verzweigungen entfalten den größten ROI, wenn sie mit dokumentierten Design-Regeln sowie Tokens und Custom Properties zu teamweiten Mustern werden
  • Verbesserungen bei der Form-UX (field-sizing, Custom Select) bringen vor allem in Mobile-first-Szenarien deutlich spürbare Vorteile

Fazit

  • Modernes CSS in der Ausgabe 2025 erweitert mit Wertfunktionen, logischen Verzweigungen und Formsteuerung deutlich den Bereich dessen, was sich direkt mit CSS umsetzen lässt, und bietet zusammen mit einer PE-Strategie hohen Wert für eine schrittweise Einführung
  • Eine realistische Roadmap ist, zunächst die Grundlagen wie Container Queries, :has() und Viewport-Einheiten zu festigen und danach animate-to-auto, if() und shape() als besonders effiziente Neuerungen priorisiert einzuführen

3 Kommentare

 
shakespeares 2025-10-06

CSS ist inzwischen fast schon zu einer eigenen Sprache geworden. Weil damit mittlerweile ziemlich weitreichende logische Implementierungen möglich sind …
Da fragt man sich fast, ob das noch wirklich ein Stylesheet ist.

 
chl11wq12 2025-10-01

Es wird wohl eine Menge richtig nützlicher Funktionen geben – Dinge, die man bisher mit JavaScript umsetzen musste.

 
addons 2025-09-30

CSS ist wirklich deutlich besser geworden.