CSS-Wrapping: 2023!

Header für CSS Wrapped

CSS Wrapped: 2023!

Wow! 2023 war ein sehr erfolgreiches Jahr für Preisvergleichsportale.

Von #Interop2023 bis hin zu vielen neuen Landungen im CSS- und UI-Bereich, die Funktionen ermöglichen, die Entwickler auf der Webplattform einst für unmöglich hielten. Mittlerweile unterstützen alle modernen Browser Containerabfragen, Subgrid, den Selektor :has() und eine Vielzahl von neuen Farbräumen und Funktionen. Chrome unterstützt scrollgesteuerte Animationen, die nur mit CSS erstellt werden, und das reibungslose Animieren zwischen Webansichten mit Ansichtsübergängen. Außerdem gibt es viele neue Primitives, die die Entwicklerfreundlichkeit verbessern, z. B. CSS-Nesting und bereichsbezogene Stile.

Was für ein Jahr! Wir möchten dieses Jubiläumsjahr mit einer Feier und Anerkennung der harten Arbeit der Browserentwickler und der Web-Community beenden, die dies alles möglich gemacht haben.

Architektonische Grundlagen

Beginnen wir mit den Aktualisierungen der CSS-Kernsprache und ‑funktionen. Diese Funktionen sind grundlegend für die Art und Weise, wie Sie Stile erstellen und organisieren, und bieten Entwicklern viele Möglichkeiten.

Trigonometrische Funktionen

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 108.
  • Safari: 15.4.

Source

In Chrome 111 wurde Unterstützung für die trigonometrischen Funktionen sin(), cos(), tan(), asin(), acos(), atan() und atan2() hinzugefügt, sodass sie in allen wichtigen Engines verfügbar sind. Diese Funktionen sind sehr praktisch für Animationen und Layouts. So ist es jetzt viel einfacher, Elemente auf einem Kreis um ein ausgewähltes Zentrum anzuordnen.

Demo zu trigonometrischen Funktionen

Weitere Informationen zu den trigonometrischen Funktionen in CSS

Komplexe nth-* Auswahl

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 9.

Mit dem Pseudoklassenselektor :nth-child() lassen sich Elemente im DOM anhand ihres Index auswählen. Mit der An+B-Mikrosyntax können Sie genau festlegen, welche Elemente ausgewählt werden sollen.

Standardmäßig werden bei den :nth-*()-Pseudos alle untergeordneten Elemente berücksichtigt. Ab Chrome 111 können Sie optional eine Selektorliste in :nth-child() und :nth-last-child() übergeben. So können Sie die Liste der untergeordneten Elemente vorfiltern, bevor An+B seine Arbeit erledigt.

In der folgenden Demo wird die 3n+1-Logik nur auf die kleinen Puppen angewendet, indem sie mit of .small herausgefiltert werden. Über die Drop-downs können Sie den verwendeten Selektor dynamisch ändern.

Komplexe Demo für die Auswahl des n-ten Elements

Weitere Informationen zu komplexen nth-*-Auswahlen

Ebene

Browser Support

  • Chrome: 118.
  • Edge: 118.
  • Firefox: 146.
  • Safari: 17.4.

Source

In Chrome 118 wurde Unterstützung für @scope hinzugefügt, eine At-Regel, mit der Sie die Selektorübereinstimmung auf einen bestimmten Teilbaum des Dokuments beschränken können. Mit dem eingeschränkten Styling können Sie sehr genau festlegen, welche Elemente Sie auswählen möchten, ohne übermäßig spezifische Selektoren schreiben oder sie eng an die DOM-Struktur koppeln zu müssen.

Ein eingeschränkter Teilbaum wird durch einen Bereichsroot (die obere Grenze) und ein optionales Bereichslimit (die untere Grenze) definiert.

@scope (.card) {  } /* scoping root */
@scope (.card) to (.card__content) {  } /* scoping root + scoping limit*/

Styleregeln, die in einem Bereichsblock platziert werden, beziehen sich nur auf Elemente innerhalb des ausgeschnittenen Teilbaums. Die folgende Styleregel mit Bereichsangabe bezieht sich beispielsweise nur auf <img>-Elemente, die sich zwischen dem .card-Element und einer beliebigen verschachtelten Komponente befinden, die dem [data-component]-Selektor entspricht.

@scope (.card) to ([data-component]) {
  img {  }
}

In der folgenden Demo werden die <img>-Elemente in der Karussellkomponente aufgrund der angewendeten Bereichsbegrenzung nicht abgeglichen.

Screenshot der Bereichsdemo

Referenz-Screenshot für die @scope-Demo

Live-Demo zu Umfang

CSS-Demo für @scope

Weitere Informationen zu @scope finden Sie im Artikel „Mit @scope die Reichweite von Selektoren einschränken“. In diesem Artikel erfahren Sie mehr über die :scope-Auswahl, die Verarbeitung von Spezifität, Bereiche ohne Prelude und die Auswirkungen von@scopeauf die Kaskade.

Verschachtelung

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 117.
  • Safari: 17.2.

Source

Vor der Verschachtelung musste jeder Selektor explizit und separat deklariert werden. Das führte zu Wiederholungen, einem aufgeblähten Stylesheet und einer unübersichtlichen Erstellung. Jetzt können Selektoren fortgesetzt werden, wobei zugehörige Stilregeln gruppiert werden.

dl {
  /* dt styles */
  
  dt {
    /* dl dt styles */
  }

  dd {
    /* dl dd styles */
  }
}

/* same as */
dt {
  /* dt styles */
}

dl dt {
  /* dl dt styles */
}

dl dd {
  /* dl dd styles */
}

Screencast zur Verschachtelung

Live-Demo zur Verschachtelung

Mit der Auswahl für das entspannte Verschachteln den Gewinner des Rennens bestimmen

Durch das Verschachteln kann das Gewicht eines Stylesheets reduziert, der Aufwand für das Wiederholen von Selektoren verringert und Komponentenstile zentralisiert werden. Die Syntax wurde ursprünglich mit einer Einschränkung veröffentlicht, die die Verwendung von & an verschiedenen Stellen erforderte. Diese Einschränkung wurde jedoch mit einem Update der Syntax für das Einbetten aufgehoben.

Weitere Informationen zum Verschachteln

Unterraster

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: 71.
  • Safari: 16.

Source

Mit CSS subgrid können Sie komplexere Grids mit einer besseren Ausrichtung zwischen untergeordneten Layouts erstellen. Damit kann ein Grid, das sich in einem anderen Grid befindet, die Zeilen und Spalten des äußeren Grids übernehmen, indem subgrid als Wert für Grid-Zeilen oder -Spalten verwendet wird.

Screencast für Unterraster

Live-Demo für Unterraster

Kopfzeile, Textkörper und Fußzeilen werden an die dynamischen Größen ihrer Geschwister angepasst.

Das Subgrid ist besonders nützlich, um untergeordnete Elemente an den dynamischen Inhalten der jeweils anderen auszurichten. So müssen Texter, UX-Schreibende und Übersetzer nicht versuchen, Projekttexte zu erstellen, die in das Layout „passen“. Mit Subgrid kann das Layout an den Inhalt angepasst werden.

Weitere Informationen zum Unterraster

Typografie

2023 gab es einige wichtige Neuerungen bei der Webtypografie. Eine besonders schöne progressive Verbesserung ist die text-wrap-Eigenschaft. Mit dieser Eigenschaft lässt sich das typografische Layout anpassen. Die Anpassung erfolgt im Browser und es ist kein zusätzliches Scripting erforderlich. Schluss mit ungleichmäßigen Zeilenlängen – jetzt ist die Typografie besser vorhersehbar.

Initial-letter

Browser Support

  • Chrome: 110.
  • Edge: 110.
  • Firefox: not supported.
  • Safari: 9.

Source

Die initial-letter-Eigenschaft, die Anfang des Jahres in Chrome 110 eingeführt wurde, ist eine kleine, aber leistungsstarke CSS-Funktion, mit der das Styling für die Platzierung von Initialen festgelegt wird. Sie können Buchstaben entweder tief- oder hochstellen. Für die Eigenschaft werden zwei Argumente akzeptiert: das erste gibt an, wie tief der Buchstabe in den entsprechenden Absatz abgesenkt werden soll, das zweite, wie weit er darüber angehoben werden soll. Sie können auch beides kombinieren, wie im folgenden Demovideo zu sehen ist.

Screenshot mit dem Anfangsbuchstaben

Screenshot der Demo für den Initialbuchstaben

Demo für Initialbuchstaben

Ändern Sie die Werte von initial-letter für das Pseudoelement ::first-letter, um die Verschiebung zu beobachten.

Weitere Informationen zur CSS-Eigenschaft „initial-letter“

text-wrap: balance and pretty

Als Entwickler kennen Sie die endgültige Größe, Schriftgröße oder sogar Sprache einer Überschrift oder eines Absatzes nicht. Alle Variablen, die für eine effektive und ästhetische Behandlung des Zeilenumbruchs erforderlich sind, sind im Browser verfügbar. Da der Browser alle Faktoren wie Schriftgröße, Sprache und zugewiesener Bereich kennt, eignet er sich hervorragend für die Verarbeitung von anspruchsvollen und hochwertigen Textlayouts.

Hier kommen zwei neue Techniken für den Zeilenumbruch ins Spiel: balance und pretty. Mit dem Wert balance soll ein harmonischer Textblock erstellt werden, während mit pretty verhindert werden soll, dass einzelne Wörter in einer Zeile stehen, und für eine gute Silbentrennung gesorgt werden soll. Beide Aufgaben wurden bisher manuell erledigt. Es ist erstaunlich, dass der Browser diese Aufgabe für jede übersetzte Sprache übernehmen kann.

Screencast mit Textumbruch

Live-Demo zum Textumbruch

In der folgenden Demo können Sie durch Ziehen des Schiebereglers die Auswirkungen von balance und pretty auf eine Überschrift und einen Absatz vergleichen. Probieren Sie aus, die Demo in eine andere Sprache zu übersetzen.

Weitere Informationen zu „text-wrap: balance“

Farbe

2023 war das Jahr der Farbe für die Webplattform. Mit neuen Farbräumen und Funktionen, die dynamische Farbgestaltung ermöglichen, können Sie lebendige, üppige Designs erstellen, die Ihre Nutzer verdienen, und sie auch anpassen.

HD-Farbräume (Farbstufe 4)

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Source

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Source

Von der Hardware über die Software bis hin zum CSS und den blinkenden Lichtern – es kann viel Arbeit für unsere Computer bedeuten, Farben so gut wie unsere Augen darzustellen. 2023 haben wir neue Farben, mehr Farben, neue Farbräume, Farbfunktionen und neue Funktionen.

Mit CSS und Farben können Sie jetzt: – prüfen, ob die Bildschirmhardware des Nutzers HDR-Farben mit großem Farbumfang unterstützt. – prüfen, ob der Browser des Nutzers Farbsyntax wie Oklch oder Display P3 unterstützt. – HDR-Farben in Oklab, Oklch, HWB, Display P3, Rec.2020, XYZ und mehr angeben. – Verläufe mit HDR-Farben erstellen. – Verläufe in alternativen Farbräumen interpolieren. – Farben mit color-mix() mischen. – Farbvarianten mit relativer Farbsyntax erstellen.

Color 4 Screencast

Farbdemo 4

In der folgenden Demo können Sie durch Ziehen des Schiebereglers die Auswirkungen von `balance` und `pretty` auf eine Überschrift und einen Absatz vergleichen. Probieren Sie aus, die Demo in eine andere Sprache zu übersetzen.

Weitere Informationen zu Color 4 und Farbräumen

Farbmischfunktion

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 16.2.

Source

Farben mischen ist eine klassische Aufgabe, die seit 2023 auch mit CSS möglich ist. Sie können einer Farbe nicht nur Weiß oder Schwarz, sondern auch Transparenz hinzufügen. Das ist in jedem beliebigen Farbraum möglich. Es ist gleichzeitig ein einfaches und ein erweitertes Farb-Feature.

Screencast zu color-mix()

Demo für color-mix()

In der Demo können Sie mit einer Farbauswahl zwei Farben, den Farbraum und den Anteil der einzelnen Farben in der Mischung auswählen.

color-mix() kann als Moment in einem Farbverlauf betrachtet werden. Während ein Farbverlauf alle Schritte von Blau zu Weiß zeigt, zeigt color-mix() nur einen Schritt. Die Sache wird komplizierter, wenn Sie Farbräume berücksichtigen und feststellen, wie unterschiedlich der Mischfarbraum und die Ergebnisse sein können.

Weitere Informationen zu color-mix()

Syntax für relative Farben

Die relative Farbsyntax (Relative Color Syntax, RCS) ist eine ergänzende Methode zu color-mix() zum Erstellen von Farbvarianten. Sie ist etwas leistungsfähiger als „color-mix()“, aber auch eine andere Strategie für die Arbeit mit Farben. Bei color-mix() kann die Farbe Weiß beigemischt werden, um eine Farbe aufzuhellen. Bei RCS haben Sie präzisen Zugriff auf den Helligkeitskanal und können calc() auf den Kanal anwenden, um die Helligkeit programmatisch zu verringern oder zu erhöhen.

RCS-Screencast

RCS-Live-Demo

Farbe und Szenen ändern Für jede wird die relative Farbsyntax verwendet, um Varianten der Grundfarbe zu erstellen.

Mit RCS können Sie relative und absolute Änderungen an einer Farbe vornehmen. Bei einer relativen Änderung wird der aktuelle Wert für die Sättigung oder Helligkeit mit calc() geändert. Bei einer absoluten Änderung wird ein Channel-Wert durch einen völlig neuen Wert ersetzt, z. B. wenn die Deckkraft auf 50 % festgelegt wird. Diese Syntax bietet Ihnen nützliche Tools für das Theming, Just-in-Time-Varianten und mehr.

Weitere Informationen zur relativen Farbsyntax

Responsives Design

Responsives Design hat sich 2023 weiterentwickelt. In diesem bahnbrechenden Jahr wurden neue Funktionen eingeführt, die die Art und Weise, wie wir responsive Weboberflächen erstellen, grundlegend verändern. Außerdem wurde ein neues Modell für das komponentenbasierte responsive Design eingeführt. Durch die Kombination von Containerabfragen und :has() können Komponenten ihr responsives und logisches Styling basierend auf der Größe des übergeordneten Elements sowie dem Vorhandensein oder Status ihrer untergeordneten Elemente selbst festlegen. Das bedeutet, dass Sie das Layout auf Seitenebene endlich vom Layout auf Komponentenebene trennen und die Logik einmal schreiben können, um Ihre Komponente überall zu verwenden.

Größencontainerabfragen

Browser Support

  • Chrome: 105.
  • Edge: 105.
  • Firefox: 110.
  • Safari: 16.

Source

Anstatt die globalen Größeninformationen des Viewports zum Anwenden von CSS-Stilen zu verwenden, unterstützen Containerabfragen die Abfrage eines übergeordneten Elements auf der Seite. Das bedeutet, dass Komponenten dynamisch über mehrere Layouts und in mehreren Ansichten hinweg gestaltet werden können. Containerabfragen für die Größe sind seit dem 14. Februar dieses Jahres in allen modernen Browsern stabil.

Um diese Funktion zu verwenden, müssen Sie zuerst die Eindämmung für das Element einrichten, das Sie abfragen. Verwenden Sie dann ähnlich wie bei einer Media-Query @container mit den Größenparametern, um die Stile anzuwenden. Zusammen mit Containerabfragen erhalten Sie Containerabfragegrößen. In der folgenden Demo wird die Containerabfragegröße cqi (die die Größe des Inline-Containers darstellt) verwendet, um die Größe des Kartenheaders festzulegen.

@container Screencast

@container Demo

Weitere Informationen zur Verwendung von Containerabfragen

Containerabfragen formatieren

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 151.
  • Safari: 18.

Stilabfragen wurden mit teilweiser Implementierung in Chrome 111 eingeführt. Derzeit können Sie mit Stilabfragen den Wert von benutzerdefinierten Attributen für ein übergeordnetes Element abfragen, wenn Sie @container style() verwenden. Sie können beispielsweise abfragen, ob ein benutzerdefinierter Eigenschaftswert vorhanden ist oder auf einen bestimmten Wert wie @container style(--rain: true) festgelegt ist.

Screenshot der Stilabfrage

Demoscreenshot für Stilcontainer-Abfragen für Wetterkarten

Demo für Stilabfrage

Farbe und Szenen ändern Für jede wird die relative Farbsyntax verwendet, um Varianten der Grundfarbe zu erstellen.

Das klingt zwar ähnlich wie die Verwendung von Klassennamen in CSS, aber Style-Abfragen haben einige Vorteile. Erstens können Sie mit Style-Abfragen den Wert in CSS nach Bedarf für Pseudostatus aktualisieren. Zweitens können Sie in zukünftigen Versionen der Implementierung Wertebereiche abfragen, um den angewendeten Stil zu bestimmen, z. B. style(60 <= --weather <= 70), und den Stil basierend auf Eigenschaft-Wert-Paaren wie style(font-style: italic) festlegen.

Weitere Informationen zur Verwendung von Stilabfragen

:has()-Selektor

Browser Support

  • Chrome: 105.
  • Edge: 105.
  • Firefox: 121.
  • Safari: 15.4.

Source

Fast 20 Jahre lang haben Entwickler einen „übergeordneten Selektor“ in CSS gefordert. Mit dem :has()-Selektor, der in Chrome 105 eingeführt wurde, ist das jetzt möglich. Wenn Sie beispielsweise .card:has(img.hero) verwenden, werden die .card-Elemente ausgewählt, die ein Hero-Bild als untergeordnetes Element haben.

:has()-Demoscreenshot

Referenz-Screenshot für die :has()-Demo

:has() Live-Demo

CSS-:has()-Demo: Karte ohne/mit Bild

Da :has() eine Liste relativer Selektoren als Argument akzeptiert, können Sie viel mehr als nur das übergeordnete Element auswählen. Mit verschiedenen CSS-Kombinatoren können Sie nicht nur im DOM-Baum nach oben, sondern auch seitwärts navigieren. Beispiel: li:has(+ li:hover) wählt das <li>-Element aus, das dem aktuell mit dem Mauszeiger berührten <li>-Element vorangestellt ist.

:has() – Screencast

:has()-Demo

CSS :has()-Demo: Dock

Weitere Informationen zum :has()-Selektor für Preisvergleichsportale

Media-Query aktualisieren

Browser Support

  • Chrome: 113.
  • Edge: 113.
  • Firefox: 102.
  • Safari: 17.

Source

Mit der Media-Anfrage update können Sie die Benutzeroberfläche an die Aktualisierungsrate eines Geräts anpassen. Das Feature kann einen Wert von fast, slow oder none zurückgeben, der sich auf die Funktionen verschiedener Geräte bezieht.

Die meisten Geräte, für die Sie entwickeln, haben wahrscheinlich eine schnelle Aktualisierungsrate. Dazu gehören Computer und die meisten Mobilgeräte. E-Reader und Geräte wie Zahlungssysteme mit geringem Stromverbrauch haben möglicherweise eine langsame Aktualisierungsrate. Wenn Sie wissen, dass das Gerät keine Animationen oder häufigen Updates verarbeiten kann, können Sie die Akkunutzung oder fehlerhafte Ansichtsaktualisierungen vermeiden.

Screencast aktualisieren

Demo aktualisieren

Simulieren Sie (durch Auswahl einer Optionsfeldoption) einen Wert für die Aktualisierungsgeschwindigkeit und sehen Sie, wie sich das auf die Ente auswirkt.

Weitere Informationen zu@media (update)

Media-Query für Scripting

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 113.
  • Safari: 17.

Source

Mit der Mediaanfrage für Scripting lässt sich prüfen, ob JavaScript verfügbar ist. Das ist sehr praktisch für die progressive Optimierung. Vor dieser Mediaanfrage bestand eine Strategie zum Erkennen der Verfügbarkeit von JavaScript darin, eine nojs-Klasse in den HTML-Code einzufügen und sie mit JavaScript zu entfernen. Diese Skripts können entfernt werden, da CSS jetzt eine Möglichkeit bietet, JavaScript zu erkennen und entsprechend anzupassen.

Hier erfahren Sie, wie Sie JavaScript auf einer Seite für Tests über die Chrome-Entwicklertools aktivieren und deaktivieren.

Screencast zum Scripting

Scripting-Demo

Wenn Sie das Design einer Website ändern möchten, kann die Media-Query für das Scripting helfen, die Änderung entsprechend der Systemeinstellung vorzunehmen, da kein JavaScript verfügbar ist. Oder Sie verwenden eine Schalterkomponente. Wenn JavaScript verfügbar ist, kann der Schalter per Wischgeste statt nur durch Ein- und Ausschalten bedient werden. Es gibt viele Möglichkeiten, die Nutzerfreundlichkeit zu verbessern, wenn Scripting verfügbar ist. Gleichzeitig wird eine sinnvolle Grundlage geschaffen, wenn Scripting deaktiviert ist.

Weitere Informationen zu Skripts.

Media-Abfrage mit reduzierter Transparenz

Browser Support

  • Chrome: 118.
  • Edge: 118.
  • Firefox: behind a flag.
  • Safari: not supported.

Source

Nicht transparente Oberflächen können bei verschiedenen Arten von Sehschwächen zu Kopfschmerzen führen oder visuell anstrengend sein. Aus diesem Grund bieten Windows, macOS und iOS Systemeinstellungen, mit denen die Transparenz der Benutzeroberfläche reduziert oder entfernt werden kann. Diese Media-Query für prefers-reduced-transparency passt gut zu den anderen Media-Queries für Einstellungen, mit denen Sie kreativ sein und gleichzeitig auf die Bedürfnisse der Nutzer eingehen können.

Screencast mit reduzierter Transparenz

Demo mit reduzierter Transparenz

In einigen Fällen können Sie ein alternatives Layout bereitstellen, in dem keine Inhalte andere Inhalte überlagern. In anderen Fällen kann die Deckkraft einer Farbe so angepasst werden, dass sie undurchsichtig oder nahezu undurchsichtig ist. Im folgenden Blogpost finden Sie weitere inspirierende Demos, die sich an die Nutzereinstellung anpassen. Sehen Sie sich diese an, wenn Sie wissen möchten, wann diese Media-Query nützlich ist.

Weitere Informationen zu@media (prefers-reduced-transparency)

Interaktion

Interaktion ist ein Eckpfeiler digitaler Erlebnisse. Sie hilft Nutzern, Feedback zu erhalten, worauf sie geklickt haben und wo sie sich in einem virtuellen Raum befinden. In diesem Jahr gab es viele spannende Funktionen, die die Komposition und Implementierung von Interaktionen erleichtert haben und so für reibungslose Nutzerabläufe und eine raffiniertere Weboberfläche sorgen.

Übergänge ansehen

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 144.
  • Safari: 18.

Source

Ansichtsübergänge haben einen großen Einfluss auf die Nutzerfreundlichkeit einer Seite. Mit der View Transitions API können Sie visuelle Übergänge zwischen zwei Seitenstatus Ihrer Single-Page-Anwendung erstellen. Diese Übergänge können Seitenübergänge oder kleinere Änderungen auf einer Seite sein, z. B. das Hinzufügen oder Entfernen eines neuen Elements in einer Liste.

Das Herzstück der View Transitions API ist die Funktion document.startViewTranstion. Übergeben Sie eine Funktion, die das DOM auf den neuen Status aktualisiert. Die API erledigt den Rest. Dazu wird ein Snapshot vor und nach der Änderung aufgenommen und dann zwischen den beiden Snapshots überblendet. Mit CSS können Sie festlegen, was erfasst wird, und optional anpassen, wie diese Momentaufnahmen animiert werden sollen.

VT-Screencast

VT-Demo

Demo für View Transitions

Die View Transitions API für Single-Page-Anwendungen wurde in Chrome 111 eingeführt. Weitere Informationen zu View Transitions

Lineare Easing-Funktion

Browser Support

  • Chrome: 113.
  • Edge: 113.
  • Firefox: 112.
  • Safari: 17.2.

Source

Lassen Sie sich nicht vom Namen dieser Funktion täuschen. Mit der Funktion linear() (nicht zu verwechseln mit dem Keyword linear) können Sie auf einfache Weise komplexe Easing-Funktionen erstellen, wobei Sie jedoch etwas an Präzision verlieren.

Vor linear(), das in Chrome 113 eingeführt wurde, war es nicht möglich, in CSS Sprung- oder Federeffekte zu erstellen. Dank linear()lassen sich diese Ein- und Ausblendeeffekte annähern, indem sie in eine Reihe von Punkten vereinfacht und dann linear zwischen diesen Punkten interpoliert werden.

Diagramm einer Bounce-Easing-Kurve mit mehreren Punkten
Die ursprüngliche Bounce-Kurve in Blau wird durch eine Reihe von Schlüsselpunkten in Grün vereinfacht. Die linear()-Funktion verwendet diese Punkte und interpoliert linear zwischen ihnen.

Screencast mit linearer Beschleunigung

Demo für lineare Übergänge

linear()-Demo für Preisvergleichsportale

Weitere Informationen zu linear() Verwenden Sie zum Erstellen von linear()-Kurven den Generator für lineare Übergänge.

Scroll-Ende

Browser Support

  • Chrome: 114.
  • Edge: 114.
  • Firefox: 109.
  • Safari: 26.2.

Source

Viele Benutzeroberflächen umfassen Scroll-Interaktionen. Manchmal müssen Informationen, die für die aktuelle Scroll-Position relevant sind, synchronisiert oder Daten basierend auf dem aktuellen Status abgerufen werden. Vor dem scrollend-Ereignis mussten Sie eine ungenaue Timeout-Methode verwenden, die ausgelöst werden konnte, während der Finger des Nutzers noch auf dem Bildschirm war. Mit dem scrollend-Ereignis haben Sie ein perfekt getimtes „scrollend“-Ereignis, das erkennt, ob ein Nutzer noch eine Geste ausführt oder nicht.

Scrollender Screencast

Scrollende Demo

Das war wichtig, weil JavaScript nicht erfassen kann, ob sich ein Finger während des Scrollens auf dem Bildschirm befindet. Diese Informationen sind einfach nicht verfügbar. Abschnitte mit ungenauem Code für das Ende des Scrollens können jetzt gelöscht und durch ein hochpräzises Ereignis des Browsers ersetzt werden.

Weitere Informationen zu „scrollend“

Scrollgesteuerte Animationen

Browser Support

  • Chrome: 115.
  • Edge: 115.
  • Firefox: behind a flag.
  • Safari: 26.

Source

Scrollgesteuerte Animationen sind eine interessante Funktion, die ab Chrome 115 verfügbar ist. Damit können Sie eine vorhandene CSS-Animation oder eine mit der Web Animations API erstellte Animation mit dem Scroll-Offset eines Scrollers verknüpfen. Wenn Sie in einem horizontalen Scroller nach oben und unten oder nach links und rechts scrollen, wird die verknüpfte Animation direkt vorwärts und rückwärts abgespielt.

Mit einer ScrollTimeline können Sie den Gesamtfortschritt eines Scrollers verfolgen, wie in der folgenden Demo gezeigt. Wenn Sie zum Ende der Seite scrollen, wird der Text Zeichen für Zeichen angezeigt.

SDA-Screencast

SDA-Demo

CSS-scrollgesteuerte Animationen – Demo: Scroll-Zeitachse

Mit einer ViewTimeline können Sie ein Element verfolgen, während es den Scrollport durchläuft. Das funktioniert ähnlich wie beim Tracking eines Elements mit IntersectionObserver. In der folgenden Demo wird jedes Bild ab dem Moment angezeigt, in dem es in den Scrollport eintritt, bis es sich in der Mitte befindet.

SDA-Demo-Screencast

SDA-Live-Demo

CSS-Demo für scrollgesteuerte Animationen: Zeitachse ansehen

Da scrollgesteuerte Animationen mit CSS-Animationen und der Web Animations API funktionieren, können Sie alle Vorteile dieser APIs nutzen. Dazu gehört auch die Möglichkeit, diese Animationen außerhalb des Hauptthreads auszuführen. Mit nur wenigen zusätzlichen Codezeilen können Sie jetzt flüssige, scrollgesteuerte Animationen außerhalb des Hauptthreads ausführen.

Weitere Informationen zu scrollgesteuerten Animationen und viele Demos

Verzögerter Anhang für Zeitachse

Browser Support

  • Chrome: 116.
  • Edge: 116.
  • Firefox: not supported.
  • Safari: 26.

Source

Wenn Sie eine scrollgesteuerte Animation über CSS anwenden, wird der DOM-Baum immer nach oben durchlaufen, um den steuernden Scroller zu finden. Die Suche ist also auf Scroll-Ancestors beschränkt. Sehr oft ist das Element, das animiert werden muss, jedoch kein untergeordnetes Element des Scrollers, sondern ein Element in einem völlig anderen Unterbaum.

Damit das animierte Element eine benannte Scroll-Timeline eines Nicht-Vorgängers finden kann, verwenden Sie die Eigenschaft timeline-scope für ein gemeinsames übergeordnetes Element. Dadurch kann die definierte scroll-timeline oder view-timeline mit diesem Namen angehängt werden, wodurch sie einen größeren Umfang erhält. Wenn das der Fall ist, kann jedes Kind dieses Elternteils die Zeitachse mit diesem Namen verwenden.

Visualisierung eines DOM-Unterbaums mit „timeline-scope“ für ein gemeinsames übergeordnetes Element
Wenn timeline-scope für das gemeinsame übergeordnete Element deklariert ist, kann scroll-timeline für den Scroller vom Element gefunden werden, das es als animation-timeline verwendet.

Demo-Screencast

Live-Demo

CSS-Scrollanimationen – Demo: verzögerte Zeitachsenzuordnung

Weitere Informationen zu timeline-scope

Animationen für diskrete Eigenschaften

Eine weitere neue Funktion im Jahr 2023 ist die Möglichkeit, diskrete Animationen zu animieren, z. B. von und nach display: none. Ab Chrome 116 können Sie display und content-visibility in Keyframe-Regeln verwenden. Sie können auch jede diskrete Eigenschaft am 50‑%-Punkt anstelle des 0‑%‑Punkts überblenden. Dies wird mit der transition-behavior-Property mit dem allow-discrete-Schlüsselwort oder in der transition-Property als Kurzform erreicht.

Diskrete Animation Screencast

Diskrete Animation Demo

Weitere Informationen zum Überblenden von diskreten Animationen

@starting-style

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: 129.
  • Safari: 17.5.

Source

Die CSS-Regel @starting-style basiert auf neuen Webfunktionen für Animationen von und nach display: none. Mit dieser Regel können Sie einem Element einen „before-open“-Stil zuweisen, den der Browser abrufen kann, bevor das Element auf der Seite geöffnet wird. Das ist sehr nützlich für Einblendanimationen und für das Animieren von Elementen wie Pop-overs oder Dialogfeldern. Das kann auch nützlich sein, wenn Sie ein Element erstellen und es animieren möchten. Im folgenden Beispiel wird ein popover-Attribut (siehe nächsten Abschnitt) animiert, sodass es von außerhalb des Darstellungsbereichs sanft in den Darstellungsbereich und in die oberste Ebene gelangt.

@starting-style Screencast

@starting-style-Demo

Weitere Informationen zu@starting-style und anderen Einstiegsanimationen

Overlay

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: not supported.
  • Safari: not supported.

Source

Die neue CSS-Eigenschaft overlay kann Ihrer Übergangsanweisung hinzugefügt werden, damit Elemente mit Top-Layer-Stilen wie popover und dialog reibungslos aus dem Top-Layer animiert werden. Wenn Sie keinen Übergang für das Overlay festlegen, wird das Element sofort wieder abgeschnitten, transformiert und verdeckt. Der Übergang ist dann nicht zu sehen. Ebenso ermöglicht overlay, dass ::backdrop beim Hinzufügen zu einem Element der obersten Ebene reibungslos animiert wird.

Screencast als Overlay

Overlay-Live-Demo

Weitere Informationen zu Overlays und anderen Abgangsanimationen

Komponenten

2023 war ein wichtiges Jahr für die Überschneidung von Stil und HTML-Komponenten. popover wurde eingeführt und es wurde viel Arbeit in die Ankerpositionierung und die Zukunft der Drop-down-Menüs investiert. Mit diesen Komponenten lassen sich gängige UI-Muster einfacher erstellen, ohne dass zusätzliche Bibliotheken erforderlich sind oder jedes Mal eigene State-Management-Systeme von Grund auf neu entwickelt werden müssen.

Popover

Browser Support

  • Chrome: 114.
  • Edge: 114.
  • Firefox: 125.
  • Safari: 17.

Source

Mit der Popover API können Sie Elemente erstellen, die über dem Rest der Seite liegen. Dazu gehören Menüs, Auswahlmöglichkeiten und Tooltips. Sie können ein einfaches Pop-over erstellen, indem Sie dem Element, das eingeblendet werden soll, das Attribut popover und eine id hinzufügen und das Attribut id über popovertarget="my-popover" mit einem aufrufenden Button verknüpfen. Die Popover API unterstützt:

  • Hochstufung in die oberste Ebene Pop-overs werden auf einer separaten Ebene über dem Rest der Seite angezeigt, sodass Sie nicht mit dem Z-Index arbeiten müssen.
  • Funktion zum leichten Schließen: Wenn Sie außerhalb des Pop-over-Bereichs klicken, wird das Pop-over geschlossen und der Fokus wird zurückgegeben.
  • Standardmäßige Fokusverwaltung: Wenn das Pop-over geöffnet wird, befindet sich der nächste Tabstopp im Pop-over.
  • Barrierefreie Tastenkombinationen: Wenn Sie die Taste esc drücken oder zweimal umschalten, wird das Pop-over geschlossen und der Fokus wird zurückgegeben.
  • Barrierefreie Komponentenbindungen: Popover-Element semantisch mit einem Popover-Trigger verbinden.

Popover-Screencast

Live-Demo für Pop-over

Horizontale Linien in der Auswahl

Eine weitere kleine Änderung an HTML, die dieses Jahr in Chrome und Safari eingeführt wurde, ist die Möglichkeit, horizontale Trennlinien (<hr>-Tags) in <select>-Elemente einzufügen, um Inhalte visuell zu trennen. Bisher wurde ein <hr>-Tag in einem Select-Element einfach nicht gerendert. Dieses Jahr unterstützen sowohl Safari als auch Chrome diese Funktion, sodass Inhalte in <select>-Elementen besser getrennt werden können.

Screenshot auswählen

Screenshot von „hr“ in „Auswählen“ mit einem hellen und einem dunklen Design in Chrome

„Live-Demo“ auswählen

Weitere Informationen zur Verwendung von „hr“ in „select“

:Gültige und ungültige Pseudoklassen für Nutzer

Browser Support

  • Chrome: 119.
  • Edge: 119.
  • Firefox: 88.
  • Safari: 16.5.

Source

Die Pseudoklassen :user-valid und :user-invalid sind in diesem Jahr in allen Browsern stabil. Sie verhalten sich ähnlich wie die Pseudoklassen :valid und :invalid, stimmen aber nur dann mit einem Formularsteuerelement überein, wenn ein Nutzer erheblich mit der Eingabe interagiert hat. Ein Formularsteuerelement, das erforderlich und leer ist, stimmt mit :invalid überein, auch wenn ein Nutzer noch nicht mit der Seite interagiert hat. Dasselbe Steuerelement stimmt erst dann mit :user-invalid überein, wenn der Nutzer die Eingabe geändert und in einem ungültigen Zustand belassen hat.

Mit diesen neuen Selektoren ist es nicht mehr erforderlich, zustandsbehafteten Code zu schreiben, um Änderungen an der Eingabe eines Nutzers zu verfolgen.

:user-* Screencast

:user-* Live-Demo

Weitere Informationen zur Verwendung von Pseudoelementen zur Formularvalidierung

Exklusives Akkordeon

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 130.
  • Safari: 17.2.

Ein häufiges UI-Muster im Web ist eine Akkordeonkomponente. Zur Implementierung dieses Musters kombinieren Sie mehrere <details>-Elemente und gruppieren sie oft visuell, um anzugeben, dass sie zusammengehören.

Neu in Chrome 120 ist die Unterstützung des Attributs name für <details>-Elemente. Wenn dieses Attribut verwendet wird, bilden mehrere <details>-Elemente mit demselben name-Wert eine semantische Gruppe. Es kann jeweils nur ein Element in der Gruppe geöffnet sein. Wenn Sie eines der <details>-Elemente aus der Gruppe öffnen, wird das zuvor geöffnete Element automatisch geschlossen. Diese Art von Akkordeon wird als exklusives Akkordeon bezeichnet.

Exklusive Akkordeon-Demo

Die <details>-Elemente, die Teil eines exklusiven Akkordeons sind, müssen nicht unbedingt gleichrangig sein. Sie können über das gesamte Dokument verteilt sein.

CSS hat in den letzten Jahren und insbesondere 2023 eine Renaissance erlebt. Wenn Sie neu im Bereich CSS sind oder nur eine Auffrischung der Grundlagen wünschen, empfehlen wir Ihnen unseren kostenlosen Kurs CSS lernen sowie die anderen kostenlosen Kurse auf web.dev.

Wir wünschen Ihnen eine schöne Weihnachtszeit und hoffen, dass Sie bald die Gelegenheit haben, einige dieser brillanten neuen CSS- und UI-Funktionen in Ihre Arbeit zu integrieren.

⇾ Das Chrome UI DevRel-Team,