CSS Wrapped: 2023!
Direkt zum Inhalt:
- Architekturgrundlagen
- Trigonometrische Funktionen
- Komplexe Auswahl des n-ten Elements
- Ebene
- Verschachtelung
- Responsives Webdesign
- Containerabfragen
- Stilabfragen
- :has-Selektor
- Mediaabfrage aktualisieren
- Scripting Media Query
- Transparenz-Medienabfrage
Wow! 2023 war ein wichtiges Jahr für CSS.
Von #Interop2023 bis hin zu vielen neuen Landings im Bereich Preisvergleichsportale und UI, die Entwickler von Funktionen unterstützen, die auf der Webplattform einst für unmöglich gehalten wurden. Jetzt unterstützen alle modernen Browser Containerabfragen, das Subgrid, die :has()
-Auswahl und eine ganze Reihe neuer Farbräume und Funktionen. In Chrome werden scrollbasierte Animationen, die nur aus CSS bestehen, und Übergänge zwischen Ansichten unterstützt. Und zu guter Letzt gibt es so viele neue Primitives, die die Arbeit für Entwickler erleichtern, wie CSS-Verschachtelung und Stile mit Gültigkeitsbereich.
Was für ein Jahr! Zum Abschluss dieses Meilensteinjahres möchten wir die harte Arbeit der Browserentwickler und der Web-Community würdigen, die dies alles möglich gemacht haben.
Architektonische Grundlagen
Beginnen wir mit den Aktualisierungen der CSS-Sprache und ‑Funktionen. Dies sind Funktionen, die grundlegend für die Art und Weise sind, wie Sie Stile verfassen und organisieren, und die dem Entwickler viel Potenzial verleihen.
Trigonometrische Funktionen
In Chrome 111 wurde die Unterstützung für die trigonometrischen Funktionen sin()
, cos()
, tan()
, asin()
, acos()
, atan()
und atan2()
hinzugefügt. Sie sind jetzt in allen gängigen Engines verfügbar. Diese Funktionen sind bei Animationen und Layout sehr nützlich. Zum Beispiel ist es jetzt viel einfacher, Elemente auf einem Kreis um einen ausgewählten Mittelpunkt herum anzuordnen.
Weitere Informationen zu trigonometrischen Funktionen in CSS
Komplexe Auswahl des n-ten Elements
Unterstützte Browser
Mit dem Pseudoklassen-Selektor :nth-child()
können Elemente im DOM anhand ihres Index ausgewählt werden. 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 Auswahlliste an :nth-child()
und :nth-last-child()
übergeben. So können Sie die Liste der Kinder vorfiltern, bevor An+B
seine Arbeit beginnt.
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-down-Menüs können Sie die verwendete Auswahl dynamisch ändern.
Weitere Informationen zu komplexen Auswahlen vom Typ „n-te“*
Ebene
In Chrome 118 wird jetzt @scope
unterstützt, eine At-Regel, mit der eine Bereichsauswahl mit einer bestimmten Unterstruktur des Dokuments abgeglichen werden kann. Mit einem begrenzten Stil können Sie genau festlegen, welche Elemente Sie auswählen, ohne übermäßig spezifische Selektoren schreiben oder sie eng mit der DOM-Struktur verknüpfen zu müssen.
Ein untergeordneter Knoten mit Bereich wird durch einen Begrenzungsknoten (die Obergrenze) und ein optionales Begrenzungslimit (die Untergrenze) definiert.
@scope (.card) { … } /* scoping root */
@scope (.card) to (.card__content) { … } /* scoping root + scoping limit*/
Stilregeln, die in einem Bereichsblock platziert werden, beziehen sich nur auf Elemente innerhalb des herausgeschnittenen untergeordneten Knotens. Die folgende Style-Regel mit Bereich richtet sich beispielsweise nur an <img>
-Elemente, die sich zwischen dem .card
-Element und einer verschachtelten Komponente befinden, die mit der [data-component]
-Auswahl übereinstimmt.
@scope (.card) to ([data-component]) {
img { … }
}
In der folgenden Demo werden die <img>
-Elemente in der Karussellkomponente aufgrund des angewandten Gültigkeitsbereichslimits nicht abgeglichen.
Screenshot der Scope-Demo
Scope (Live-Demo)
Weitere Informationen zu @scope
finden Sie im Artikel Mit @scope
die Reichweite Ihrer Auswahlen einschränken. In diesem Artikel erfahren Sie mehr über die :scope
-Auswahl, die Verarbeitung von Spezifität, Bereiche ohne Präludium und die Auswirkungen von @scope
auf die Kaskade.
Verschachtelung
Vor der Verschachtelung musste jeder Selektor explizit und separat deklariert werden. Dies führt zu Wiederholungen, einem großen Stylesheet-Volumen und einer unübersichtlichen Autorenansicht. Selektoren können jetzt fortgesetzt werden, wenn zugehörige Stilregeln gruppiert sind.
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 verschachteln
Nesting-Live-Demo
Durch Verschachtelung kann das Gewicht eines Stylesheets reduziert, der Overhead wiederholter Selectors verringert und Komponentenstile zentralisiert werden. Die Syntax wurde ursprünglich mit einer Einschränkung veröffentlicht, die die Verwendung von &
an verschiedenen Stellen erforderte, aber seitdem durch eine Aktualisierung der gelockerten Verschachtelungssyntax verbessert wurde.
Subgrid
Mit CSS subgrid
können Sie komplexere Raster mit besserer Ausrichtung zwischen untergeordneten Layouts erstellen. So kann ein Raster, das sich in einem anderen Raster befindet, die Zeilen und Spalten des äußeren Rasters als eigene übernehmen, indem subgrid
als Wert für Rasterzeilen oder ‑spalten verwendet wird.
Screencast zu Subgrid
Live-Demo für untergeordnete Raster
Das untergeordnete Raster ist besonders nützlich, um Geschwisterelemente aneinander auszurichten. So müssen Texter, UX-Schreibende und Übersetzer nicht mehr versuchen, Projekttext zu erstellen, der in das Layout „passt“. Mit Subgrid kann das Layout an den Inhalt angepasst werden.
Typografie
2023 gab es einige wichtige Updates bei der Webtypografie. Eine besonders schöne progressive Verbesserung ist die Eigenschaft text-wrap
. Mit dieser Eigenschaft können Sie das typografische Layout anpassen, das im Browser ohne zusätzliches Scripting erstellt wird. Schluss mit komplizierten Linienlängen und einer besser vorhersehbaren Typografie!
Anfangsbuchstabe
Die Eigenschaft initial-letter
wurde Anfang des Jahres in Chrome 110 eingeführt. Sie ist eine kleine, aber leistungsstarke CSS-Funktion, mit der das Styling für die Platzierung von Anfangsbuchstaben festgelegt wird. Sie können Buchstaben entweder abgesenkt oder erhöht positionieren. Die -Eigenschaft akzeptiert zwei Argumente: das erste für die Tiefe des Buchstabens im entsprechenden Absatz und das zweite dafür, wie stark der Buchstabe darüber angehoben werden soll. Sie können auch eine Kombination aus beiden verwenden, wie in der folgenden Demo.
Screenshot mit Anfangsbuchstaben
Demo des ersten Briefs
Textumbruch: Ausgeglichen und hübsch
Als Entwickler kennen Sie die endgültige Größe, die Schriftgröße oder die Sprache einer Überschrift oder eines Absatzes nicht. Alle Variablen, die für eine effektive und ästhetische Behandlung des Textumbruchs erforderlich sind, befinden sich im Browser. Da der Browser alle Faktoren wie Schriftgröße, Sprache und zugewiesenen Bereich kennt, eignet er sich hervorragend für die Verarbeitung eines erweiterten und hochwertigen Textlayouts.
Hier kommen zwei neue Textumbruchtechniken ins Spiel: balance
und pretty
. Mit dem Wert balance
soll ein harmonischer Textblock erstellt werden, während mit pretty
Waisenzeilen vermieden und eine sinnvolle Silbentrennung gewährleistet werden sollen. Beide Aufgaben wurden traditionell von Hand erledigt und es ist toll, wenn der Browser die Aufgabe übernimmt und sie für jede übersetzte Sprache funktioniert.
Screencast mit Textumbruch
Live-Demo für Textumbruch
Farbe
2023 war das Jahr der Farben für die Webplattform. Mit neuen Farbräumen und Funktionen, die dynamische Farbthemen ermöglichen, können Sie die lebendigen, üppigen Themen erstellen, die Ihre Nutzer verdienen, und sie auch noch individuell anpassen.
HD-Farbräume (Farbebene 4)
Von der Hardware bis hin zur Software, dem CSS und den blinkenden Lichtern – es kann eine Menge Arbeit für unsere Computer erfordern, Farben so gut darzustellen, wie unser menschliches Auge sieht. 2023 gibt es neue Farben, mehr Farben, neue Farbräume, Farbfunktionen und neue Funktionen.
Mit CSS und Farben können Sie jetzt Folgendes tun:
– Prüfen, ob die Bildschirmhardware des Nutzers HDR-Farben mit großem Farbraum unterstützt.
- Überprüfen Sie, ob der Browser des Nutzers Farbsyntax wie Oklch oder Display P3 unterstützt.
– HDR-Farben für Oklab, Oklch, HWB, Display P3, Rec.2020, XYZ und weitere Formate festlegen.
– Verläufe mit HDR-Farben erstellen,
– Verläufe in alternativen Farbräumen interpolieren.
– Kombiniere Farben mit color-mix()
.
– Farbvarianten mit relativer Farbsyntax erstellen
Color 4 – Screencast
Color 4-Demo
Funktion „Farbmix“
Das Mischen von Farben ist eine klassische Aufgabe, die ab 2023 auch mit CSS möglich ist. Sie können nicht nur Weiß oder Schwarz mit einer Farbe mischen, sondern auch Transparenz. All dies ist in einem beliebigen Farbraum möglich. Es ist gleichzeitig eine grundlegende und eine erweiterte Farbfunktion.
Screencast zu color-mix()
Demo für „color-mix()“
Sie können sich color-mix()
als einen bestimmten Moment in einem Farbverlauf vorstellen. Während ein Farbverlauf alle Schritte zeigt, die erforderlich sind, um von Blau zu Weiß zu gelangen, zeigt color-mix()
nur einen Schritt. Es wird noch interessanter, wenn Sie Farbräume berücksichtigen und herausfinden, wie unterschiedlich der Mischfarbraum die Ergebnisse beeinflussen kann.
Syntax für relative Farben
Die relative Farbsyntax (RCS) ist eine ergänzende Methode zu color-mix()
zum Erstellen von Farbvarianten. Es ist etwas leistungsfähiger als „color-mix()“, aber auch eine andere Strategie für die Arbeit mit Farben. color-mix()
kann die Farbe Weiß hinzufügen, um eine Farbe aufzuhellen. RCS bietet genauen Zugriff auf den Helligkeitskanal und die Möglichkeit, calc()
auf dem Kanal zu verwenden, um die Helligkeit programmatisch zu verringern oder zu erhöhen.
RCS-Screencast
RCS-Live-Demo
Mit RCS können Sie relative und absolute Manipulationen an einer Farbe vornehmen. Bei einer relativen Änderung wird der aktuelle Wert für Sättigung oder Helligkeit mit calc()
geändert. Bei einer absoluten Änderung ersetzen Sie einen Kanalwert durch einen völlig neuen Wert, z. B. indem Sie die Deckkraft auf 50 % festlegen. Diese Syntax bietet unter anderem nützliche Tools für Designs und Just-in-Time-Varianten.
Responsives Design
Responsives Design wurde 2023 entwickelt. Dieses wegweisende Jahr hat neue Funktionen ermöglicht, die die Art und Weise, wie wir responsive Websites erstellen, völlig verändern, und ein neues Modell für komponentenbasiertes responsives Design eingeführt. Die Kombination aus Containerabfragen und :has()
unterstützt Komponenten, die ein responsives und logisches Design haben, das auf der Größe des übergeordneten Elements sowie der Anwesenheit oder dem Status der untergeordneten Elemente basiert. Das bedeutet, dass Sie das Layout auf Seitenebene endlich vom Layout auf Komponentenebene trennen und die Logik einmal schreiben können, um die Komponente überall zu verwenden.
Containerabfragen skalieren
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 in mehreren Layouts und in mehreren Ansichten gestaltet werden können. Containerabfragen nach Größe sind seit dem Valentinstag (14. Februar) in allen modernen Browsern stabil.
Wenn Sie diese Funktion verwenden möchten, müssen Sie zuerst das Element einrichten, für das Sie eine Abfrage stellen. Verwenden Sie dann, ähnlich wie bei einer Medienabfrage, @container
mit den Größenparametern, um die Stile anzuwenden. Neben Containerabfragen erhalten Sie auch Containerabfragegrößen. In der folgenden Demo wird die Containerabfragegröße cqi
(die die Größe des Inline-Containers darstellt) verwendet, um die Größe der Kartenüberschrift anzupassen.
@container Screencast
@container Demo
Abfragen für Stilcontainer
Stilabfragen wurden in Chrome 111 teilweise implementiert. Mit Stilabfragen können Sie derzeit den Wert benutzerdefinierter Properties für ein übergeordnetes Element abfragen, wenn Sie @container style()
verwenden. Sie können beispielsweise prüfen, ob ein benutzerdefinierter Property-Wert vorhanden ist oder auf einen bestimmten Wert wie @container style(--rain: true)
festgelegt ist.
Screenshot einer Stilabfrage
Demo für Stilabfragen
Das klingt zwar ähnlich wie die Verwendung von Klassennamen in CSS, aber Stilabfragen haben einige Vorteile. Erstens: Mit Stilabfragen können Sie den Wert in CSS nach Bedarf für Pseudozustände aktualisieren. In zukünftigen Versionen der Implementierung können Sie auch Wertebereiche abfragen, um den angewendeten Stil zu ermitteln, z. B. style(60 <= --weather <= 70)
, und den Stil basierend auf Attribut/Wert-Paaren wie style(font-style: italic)
.
:has()-Auswahl
Seit fast 20 Jahren haben Entwickler einen „übergeordneten Selektor“ in CSS gefordert. Mit dem :has()
-Auswahltool, das 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-Image als untergeordnetes Element haben.
:has() – Demoscreenshot
:has() – Live-Demo
Da :has()
eine relative Selektorliste als Argument annimmt, können Sie viel mehr auswählen als das übergeordnete Element. Wenn Sie verschiedene CSS-Kombinatoren verwenden, ist es möglich, nicht nur den DOM-Baum nach oben zu gehen, sondern auch eine seitliche Auswahl zu treffen. Mit li:has(+ li:hover)
wird beispielsweise das <li>
-Element ausgewählt, das vor dem <li>
-Element steht, auf das sich aktuell der Mauszeiger befindet.
:has() Screencast
:has()-Demo
Mediaabfrage aktualisieren
Mit der Medienabfrage update
kannst du die Benutzeroberfläche an die Aktualisierungsrate eines Geräts anpassen. Die Funktion kann den Wert fast
, slow
oder none
zurückgeben, der sich auf die Funktionen verschiedener Geräte bezieht.
Die meisten Geräte, für die Sie Designs entwickeln, haben wahrscheinlich eine schnelle Aktualisierungsrate. Dazu gehören Computer und die meisten Mobilgeräte. E-Reader und Geräte wie Zahlungssysteme mit geringer Leistung haben möglicherweise eine niedrige Bildwiederholrate. 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
Scripting Media Query
Mit der Scripting-Medienabfrage lässt sich prüfen, ob JavaScript verfügbar ist. Das ist sehr gut für die progressive Verbesserung geeignet. Vor dieser Mediaabfrage wurde JavaScript mithilfe einer nojs
-Klasse in der HTML-Datei erkannt und mit JavaScript wieder entfernt. Diese Scripts können entfernt werden, da CSS jetzt JavaScript erkennen und entsprechend anpassen kann.
Scripting für Screencast
Scripting-Demo
Angenommen, Sie möchten auf einer Website das Design wechseln. Die Scripting-Mediaabfrage kann dabei helfen, den Wechsel gegen die Systemeinstellung auszuführen, da kein JavaScript verfügbar ist. Oder denken Sie an eine Schalterkomponente: Wenn JavaScript verfügbar ist, kann der Schalter durch Wischen mit einer Geste aktiviert und deaktiviert werden. Es gibt viele Möglichkeiten, die UX zu verbessern, wenn Scripting verfügbar ist, und gleichzeitig eine sinnvolle Grundlage zu bieten, wenn Scripting deaktiviert ist.
Medienabfrage mit reduzierter Transparenz
Nicht undurchsichtige Oberflächen können bei verschiedenen Arten von Sehbeeinträchtigungen Kopfschmerzen verursachen oder erschweren. Aus diesem Grund haben Windows, macOS und iOS Systemeinstellungen, mit denen die Transparenz der Benutzeroberfläche reduziert oder entfernt werden kann. Diese Mediaabfrage für prefers-reduced-transparency
passt gut zu den anderen Mediaabfragen für Präferenzen. So können Sie kreativ sein und gleichzeitig Anpassungen für Nutzer vornehmen.
Screencast zu reduzierter Transparenz
Demo: Verringerte Transparenz
In einigen Fällen können Sie ein alternatives Layout angeben, bei dem keine Inhalte über andere gelegt werden. In anderen Fällen kann die Deckkraft einer Farbe so eingestellt werden, dass sie blickdicht oder fast blickdicht ist. Im folgenden Blogpost finden Sie weitere inspirierende Demos, die sich an die Nutzereinstellungen anpassen. Sehen Sie sich diese an, wenn Sie wissen möchten, wann diese Mediaabfrage sinnvoll ist.
Weitere Informationen zu@media (prefers-reduced-transparency)
Interaktion
Interaktion ist ein Eckpfeiler der digitalen Welt. Sie hilft Nutzenden, Feedback dazu zu erhalten, was sie angeklickt haben und wo sie sich in einem virtuellen Raum befinden. In diesem Jahr wurden viele spannende Funktionen eingeführt, mit denen sich Interaktionen einfacher erstellen und implementieren lassen. So können Nutzer die Website reibungslos nutzen und die Weberfahrung wird optimiert.
Übergänge ansehen
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 Seitenzuständen Ihrer Single-Page-Anwendung erstellen. Diese Übergänge können sich auf eine ganze Seite oder auf kleinere Elemente auf einer Seite beziehen, z. B. das Hinzufügen oder Entfernen eines neuen Elements aus einer Liste.
Den Kern der View Transitions API bildet die document.startViewTranstion
-Funktion. Übergeben Sie eine Funktion, die das DOM auf den neuen Status aktualisiert, und die API erledigt alles für Sie. Dazu wird ein Vorher-Nachher-Snapshot erstellt und dann zwischen den beiden gewechselt. Mit CSS können Sie festlegen, was erfasst wird, und optional anpassen, wie diese Snapshots animiert werden sollen.
VT-Screencast
VT-Demo
Die View Transitions API für Single-Page-Anwendungen wurde in Chrome 111 eingeführt. Weitere Informationen zu Bildübergängen
Lineare Ease-Funktion
Unterstützte Browser
Lassen Sie sich vom Namen dieser Funktion nicht täuschen. Mit der Funktion linear()
(nicht zu verwechseln mit dem Schlüsselwort linear
) können Sie auf einfache Weise komplexe Ease-In-/Ease-Out-Funktionen erstellen. Allerdings geht dabei etwas Präzision verloren.
Vor linear()
, das in Chrome 113 verfügbar war, war es nicht möglich, Bounce- oder Frühlingseffekte in CSS zu erstellen. Mit linear()
lassen sich diese Übergänge approximieren, indem sie in eine Reihe von Punkten vereinfacht und dann linear zwischen diesen Punkten interpoliert werden.
Screencast mit linearer Überblendung
Demo für lineare Übergänge
Weitere Informationen zu linear()
Verwenden Sie den Generator für lineare Übergänge, um linear()
-Kurven zu erstellen.
Scroll-Ende
Viele Oberflächen umfassen Scroll-Interaktionen. Manchmal muss die Oberfläche Informationen synchronisieren, die für die aktuelle Scrollposition relevant sind, oder Daten basierend auf dem aktuellen Status abrufen. Vor dem scrollend
-Ereignis musste eine falsche Zeitüberschreitungsmethode verwendet werden, die ausgelöst werden konnte, während der Finger noch auf dem Bildschirm war. Mit dem Ereignis scrollend
können Sie ein perfekt getimtes Scrollereignis erfassen, das erkennt, ob ein Nutzer noch in der Mitte einer Geste ist oder nicht.
Screencast gescrollt
Gescrollte Demo
Das war wichtig für den Browser, da JavaScript die Präsenz eines Fingers auf dem Display beim Scrollen nicht verfolgen kann. Die Informationen sind einfach nicht verfügbar. Code für fehlerhafte Versuche, das Ende des Scrollens zu ermitteln, kann jetzt gelöscht und durch ein Ereignis mit hoher Präzision ersetzt werden, das dem Browser gehört.
Scroll-basierte Animationen
Scrollangetriebene Animationen sind eine spannende Funktion, die seit Chrome 115 verfügbar ist. So 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 nach oben und unten oder bei einem horizontalen Scroller nach links und rechts scrollen, wird die verknüpfte Animation direkt vor- und zurückgespult.
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 nach und nach sichtbar.
SDA-Screencast
SDA-Demo
Mit einer ViewTimeline können Sie ein Element erfassen, während es den Scrollport überschreitet. Das funktioniert ähnlich wie bei IntersectionObserver, der ein Element verfolgt. In der folgenden Demo wird jedes Bild von dem Moment an angezeigt, in dem es den Scrollbereich betritt, bis es sich in der Mitte befindet.
SDA-Demo-Screencast
SDA-Livedemo
Da scrollbare 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 über den Hauptthread auszuführen. Mit nur wenigen zusätzlichen Codezeilen können Sie jetzt flüssige, vom Scrollen gesteuerte Animationen im Hauptthread ausführen. Was gibt es da nicht zu mögen?
Weitere Informationen zu scrollbasierten Animationen finden Sie in diesem Artikel oder auf der Seite „scroll-driven-animations.style“, auf der viele Demos zu sehen sind.
Anhang zur verzögerten Zeitachse
Beim Anwenden einer Scroll-gesteuerten Animation über CSS geht der Suchmechanismus zum Finden des steuernden Scroller immer den DOM-Baum hoch, sodass dieser auf Scroll-Vorgänger beschränkt ist. Häufig ist das zu animierende Element jedoch kein untergeordnetes Element des Scrollers, sondern ein Element, das sich in einer völlig anderen Unterstruktur befindet.
Wenn das animierte Element eine benannte Scroll-Zeitachse eines nicht übergeordneten Elements finden soll, verwenden Sie die timeline-scope
-Eigenschaft auf einem gemeinsamen übergeordneten Element. So kann die definierte scroll-timeline
oder view-timeline
mit diesem Namen angehängt werden, was ihr einen größeren Umfang verleiht. So kann jedes untergeordnete Element dieses übergeordneten Elements die Zeitachse mit diesem Namen verwenden.
Demo-Screencast
Live-Demo
Animationen für diskrete Eigenschaften
Eine weitere neue Funktion 2023 ist die Möglichkeit, diskrete Animationen zu erstellen, z. B. von und zu display: none
. Ab Chrome 116 können Sie display
und content-visibility
in Keyframe-Regeln verwenden. Sie können auch jede beliebige Eigenschaft am 50-%-Punkt statt am 0-%-Punkt ändern. Das geht mit der transition-behavior
-Property und dem Schlüsselwort allow-discrete
oder als Kurzform in der transition
-Property.
Diskrete Animation Screencast
Diskrete Animation Demo
@starting-style
Die CSS-Regel @starting-style
basiert auf neuen Webfunktionen für die Animation von display: none
zu und von display: none
. Mit dieser Regel können Sie einem Element einen Stil vor dem Öffnen zuweisen, den der Browser abrufen kann, bevor das Element auf der Seite geöffnet wird. Dies ist sehr nützlich für Eintrittsanimationen und für die Animation von Elementen wie Pop-ups oder Dialogfeldern. Es kann auch nützlich sein, wenn Sie ein Element erstellen und es animieren möchten. Im folgenden Beispiel wird ein popover
-Attribut (siehe nächster Abschnitt) von außerhalb des Darstellungsbereichs gleichmäßig in die oberste Ebene verschoben.
@starting-style Screencast
Demo für @starting-style
Weitere Informationen zu @starting-style und anderen Eintragsanimationen
Overlay
Die neue CSS-Eigenschaft overlay
kann dem Übergang hinzugefügt werden, damit Elemente mit Stilen der obersten Ebene wie popover
und dialog
reibungslos aus der obersten Ebene animiert werden können. Wenn du kein Übergangs-Overlay verwendest, wird dein Element sofort wieder zugeschnitten, umgewandelt und verdeckt und der Übergang wird nicht mehr angezeigt. Ähnlich kann mit overlay
eine reibungslose Ausblendung von ::backdrop
erreicht werden, wenn es einem Element der obersten Ebene hinzugefügt wird.
Overlay-Screencast
Overlay (Live-Demo)
Weitere Informationen zu Overlays und anderen Ausstiegsanimationen
Komponenten
2023 war ein wichtiges Jahr für die Kombination von Stil und HTML-Komponenten. popover
wurde eingeführt und es wurde viel an der Positionierung von Ankern und der Zukunft des Stylings von Drop-down-Menüs gearbeitet. Mit diesen Komponenten lassen sich gängige UI-Muster einfacher erstellen, ohne auf zusätzliche Bibliotheken zurückgreifen oder jedes Mal eigene Systeme zur Zustandsverwaltung von Grund auf neu erstellen zu müssen.
Popover
Mit der Popover API können Sie Elemente erstellen, die über dem Rest der Seite platziert werden. Dazu gehören Menüs, Auswahlmöglichkeiten und Kurzinfos. Sie können ein einfaches Pop-over erstellen, indem Sie dem eingeblendeten Element das Attribut popover
und ein id
hinzufügen und das Attribut id
mithilfe von popovertarget="my-popover"
mit einer aufrufenden Schaltfläche verbinden. Die Popover API unterstützt:
- Beförderung in die oberste Schicht. Pop-ups werden auf einer separaten Ebene über dem Rest der Seite angezeigt, sodass Sie nicht mit dem Z-Index herumspielen müssen.
- Lichtabschaltung: Wenn Sie außerhalb des Pop-over-Bereichs klicken, wird das Pop-over geschlossen und der Fokus zurückgesetzt.
- Standardmäßige Fokusverwaltung Wenn Sie das Pop-up öffnen, wird der nächste Markierungsstopp im Pop-up angezeigt.
- Barrierefreie Tastaturbindungen Wenn Sie die Taste
esc
drücken oder das Pop-over zweimal antippen, wird es geschlossen und der Fokus wechselt zurück. - Zugängliche Komponentenbindungen Semantische Verknüpfung eines Pop-up-Elements mit einem Pop-up-Trigger
Pop-over-Screencast
Pop-over (Live-Demo)
Horizontale Linien in Auswahl
Eine weitere kleine Änderung an HTML, die dieses Jahr in Chrome und Safari eingeführt wurde, ist die Möglichkeit, horizontale Linienelemente (<hr>
-Tags) in <select>
-Elemente einzufügen, um Inhalte visuell aufzuteilen. Bisher wurde ein <hr>
-Tag in einem Auswahl-Tag nicht gerendert. Dieses Jahr wird diese Funktion jedoch sowohl in Safari als auch in Chrome unterstützt, wodurch Inhalte innerhalb von <select>
-Elementen besser voneinander getrennt werden können.
Screenshot auswählen
„Live-Demo“ auswählen
:Gültige und ungültige Pseudoklassen für Nutzer
:user-valid
und :user-invalid
sind in diesem Jahr in allen Browsern stabil und verhalten sich ähnlich wie die Pseudoklassen :valid
und :invalid
, stimmen aber erst dann mit einem Formularsteuerelement überein, wenn ein Nutzer signifikant mit der Eingabe interagiert hat. Ein Pflichtfeld, das leer ist, wird mit :invalid
abgeglichen, 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 einen ungültigen Status belassen hat.
Mit diesen neuen Auswahlelementen müssen Sie keinen zustandsabhängigen Code mehr schreiben, um die Eingaben eines Nutzers im Blick zu behalten.
:nutzer-* Screencast
:user-* Live-Demo
Weitere Informationen zu den Pseudoelementen für die Formularvalidierung „user-*“
Exklusives Akkordeon
Unterstützte Browser
Ein gängiges UI-Muster im Web ist die Akkordeonkomponente. Um dieses Muster zu implementieren, kombinierst du einige <details>
-Elemente. Oft werden sie visuell gruppiert, um anzuzeigen, dass sie zusammengehören.
In Chrome 120 wird das name
-Attribut für <details>
-Elemente unterstützt. 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.
Die <details>
-Elemente, die zu einem ausschließenden Akkordeon gehören, müssen nicht unbedingt Geschwister sein. Sie können im Dokument verteilt sein.
CSS hat in den letzten Jahren eine Renaissance erlebt, insbesondere 2023. Wenn Sie neu bei CSS sind oder einfach nur Ihr Wissen zu den Grundlagen auffrischen möchten, schauen Sie sich unseren kostenlosen Kurs CSS lernen sowie die anderen kostenlosen Kurse auf web.dev an.
Wir wünschen Ihnen frohe Feiertage und hoffen, dass Sie bald die Gelegenheit haben, einige dieser brillanten neuen CSS- und UI-Funktionen in Ihre Arbeit einfließen zu lassen.
Ihr Chrome UI DevRel-Team,