Neues Jahr, neue State of CSS-Umfrage! Wir ziehen sie mittlerweile zum vierten Mal in Folge heran, um über die neusten Errungenschaften bei der Gestaltung von Web-Oberflächen zu sprechen. Und weil das ziemlich viel ist, teilen wir das ganze wie zuletzt auch in mehrere Teile und arbeiten uns Stück für Stück durch die einzelnen Kapitel der Umfrage. Dies ist Teil zwei.
Schaunotizen
- [00:03:42] Interactions
- Wir steigen im Kapitel „Interactions“ wieder ein werfen als erstes einen Blick auf den Themenkomplex des Scroll-Snappings, eine Erfindung von Microsoft und erstmalig zu bewundern im Internet Explorer 10. Generell mögen wir das Feature sehr, sind uns aber einig, dass es einem manchmal auch in die Quere kommen kann – insbesondere wenn der Typ nicht auf
proximity
, sondern aufmandatory
steht.
Weiter geht es mit
scroll-behavior
, das wir heutzutage eigentlich immer auf den Wertsmooth
setzen. Hier und da führt das aber zu unschönen Interaktionen, weswegen man es ggf. temporär, z.B. mit Hilfe einer Animation, aus und wieder an stellt. Wir sind uns außerdem einig, dass Firefox das weiche Scrollen deutlich schöner umsetzt als Chrome.
Nächster Punkt ist
overscroll-behavior
, mit dem man steuern kann, was beim Erreichen des Endes von Scroll-Bereichen passieren soll. Es ermöglicht uns, das Bounce-Verhalten und Gesten-Shortcuts zu beeinflussen, was besonders nützlich ist, wenn wir komplexe Interfaces erstellen. Außerdem kann man damit verhindern, dass durch ein Overlay hindurch die Seite Scroll-Kommandos erhält und sich so ungewollt unter dem Overlay hinweg scrollen lässt. Leider funktioniert die Property nur, wenn es auch wirklich etwas zu scrollen gibt, so dass man manchmal künstlich Scroll-Bereiche erzeugen muss.
Wir sprechen über
scrollbar-gutter
, das nun auch in Safari implementiert wurde.
Schließlich geht es um
@starting-style
undtransition-behavior: allow-discrete
, die brandneu sind und einem neue Möglichkeiten im Bereich der CSS Transitions erschließen. - [00:37:19] Typography
- Weiter geht es mit dem nächsten Kapitel und wir beginnen mit dem
font-display
-Descriptor. Setzt man ihn nicht, machen die Browser, was sie wollen. Darum will man es immer setzen und das meist aufswap
. Flankierend sollte man aber immer zusehen, dass man seine Fonts auf die gebräuchlichsten Zeichen eindampft (subsetted) und sie mit Hilfe von Resource-Hints preloaded.
Als nächstes reden wir über
line-clamp
, das relativ frisch standardisiert und in die Browser eingebaut wurde, ohne die alten WebKit-Hacks, wo man es nur in Kombination mit einem alten Flexbox-Dialekt ans Laufen bekommen hat.
Weiter geht es mit
text-wrap: balance
undtext-wrap: pretty
, die wir für eine fantastische Ergänzung des typografischen Werkzeugkastens halten. Und wir schauen uns kurz die neue Propertyhanging-punctuation
an, welche derzeit nur in Safari funktioniert, insgesamt aber auch nur marginalen Effekt zeitigt.
Effektreicher ist die
initial-letter
-Eigenschaft, mit der man Initiale etwas schöner umsetzen kann, als mit dem bislang (und auch von uns auf unserer Webseite) gebräuchlichen Hack, das::first-letter
-Pseudoelement zu stylen.
- [00:58:58] Accessibility
- Das dritte von uns behandelte Kapitel dreht sich um Barrierefreiheit und den Einfluss, den man CSS darauf ausüben kann.
Da wäre zum einen die
prefers-reduced-motion
-Feature-Query, mit denen man Animationen und Transitions absichern kann.prefers-color-scheme
berücksichtigt, ob jemand eine Seite lieber in hell oder dunkel betrachten mag. Mitprefers-reduced-data
lässt sich eine schlankere Seite an Besucher ausliefern, die um weniger Datenumfang bitten – wobei wir nicht genau wissen, wieso man das nicht immer anstreben sollte. Mit Hilfe vonprefers-contrast
undforced-colors
kann man auf besondere Darstellungswünsche von Besuchenden eingehen.
Für das Funktionsprinzip von
:focus-visible
möchten wir auf die Revision 547: The State of CSS (Teil 2) von 2022 verweisen. Ergänzen möchten wir aber die Info, dass die.focus()
-Methode in ihrem Options-Objekt die EigenschaftfocusVisible
ebenfalls unterstützt.
Ganz neu ist die
light-dark()
-Funktion in CSS, die man an allen Stellen einsetzen kann, an denen in CSS Farbwerte stehen. Als Parameter gibt man der Funktion zwei Farbangaben mit, von denen die erste bei aktiviertem Light-Mode angewendet wird und die zweite bei aktiviertem Dark-Mode.