Gibt es jetzt zu viel CSS?

Avatar of Sacha Greif
Sacha Greif am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Als Frontend-Entwickler haben wir im Laufe der Jahre viele Dinge gewünscht – Möglichkeiten, Dinge in CSS zu zentrieren, Stile zu kapseln, ein Seitenverhältnis für ein Element festzulegen, eine feinere Kontrolle über unsere Farben zu erhalten, ein Element basierend auf seinen Kindelementen auszuwählen, Ebenen der Spezifität zu verwalten, Elemente auf die Breite ihrer Eltern reagieren zu lassen… die Liste geht weiter und weiter.

Und jetzt, da wir alles haben, was wir uns gewünscht haben und noch mehr, fragen sich einige von uns – haben wir jetzt *zu viel* CSS?

Die dunklen Zeiten

Wenn Sie, wie ich, während der Anfänge von CSS in die Webentwicklung eingestiegen sind, erscheint die Idee, zu viel davon zu haben, lächerlich.

Früher bestand praktisch die gesamte Aufgabenbeschreibung eines Frontend-Entwicklers darin, mit den Einschränkungen von CSS umzugehen. Der clearfix hack, um Floats zu löschen, der 100% padding hack, um quadratische Divs zu erstellen, ganz zu schweigen von den semi-zufälligen Anwendungen von unzusammenhängenden Eigenschaften, um Internet Explorer dazu zu bringen, Ihre Befehle auszuführen.

Zu dieser Zeit war der Browser ein heimtückischer Feind, der durch pure List und arkane Beschwörungen besiegt werden musste. Heute wartet die perfekte Eigenschaft, nur eine Kopie und Einfügung von MDN entfernt.

Die neue Ära von CSS

Aber heute sind die Dinge ganz anders: Nicht nur bewegen sich die Dinge viel schneller, sondern Browser-Anbieter *kümmern sich tatsächlich* darum, Entwickler glücklich zu machen! Ich weiß, ich konnte es auch nicht glauben. Aber ich führe die jährliche State of CSS Entwicklerumfrage durch (die übrigens *jetzt geöffnet ist – machen Sie mit!*), und ich weiß mit Sicherheit, dass Browser-Entwicklungsteams die Umfrageergebnisse (neben vielen anderen Datenpunkten) zur Information ihrer Roadmap nutzen.

Darüber hinaus hat Google meine Arbeit an der Umfrage mitfinanziert und sogar Lea Verou eingestellt, um die Auswahl der diesjährigen Umfragefragen zu leiten.

Es ist nicht nur Google. Es ist in Mode gekommen, Safari und Apple im Allgemeinen zu beschimpfen (manchmal zu Recht), aber man kann nicht leugnen, wie leidenschaftlich jemand wie Jen Simmons dafür ist, Entwicklern zuzuhören und das Web zu verbessern.

Und nicht nur die Browser-Anbieter verbessern CSS auf eigene Faust; sie arbeiten sogar über Kampflinien hinweg mit Initiativen wie Interop 2023 zusammen, um Inkonsistenzen und Inkompatibilitäten zwischen Browsern zu reduzieren.

Zu viel des Guten?

Das Ergebnis all dessen ist, dass wir nun mit einer Fülle von CSS-Reichtümern konfrontiert sind, und es kann schwer sein, Schritt zu halten. CSS Grid wurde vor fast fünf Jahren in großen Browsern unterstützt, doch ich schaue jedes Mal nach, wenn ich es benutze. Und so cool subgrid auch scheint, ich habe es noch nicht einmal ausprobiert.

Bei der Auswahl, welche CSS-Funktionen in die State of CSS aufgenommen oder nicht aufgenommen werden sollten, haben Lea und ich viele Funktionen berücksichtigt, aber auch einige verworfen. Einige Beispiele für Funktionen, die wir *nicht* aufgenommen haben, sind

  • Die linear() easing function, mit der Sie easing curves feingranularer definieren können. 
  • Die env() function, mit der Sie von Browser oder Gerät definierte Variablen verwenden können. 
  • Die scrollbar-width-Eigenschaft, die zur Steuerung des Erscheinungsbilds einer Scrollbar dient. 
  • Die margin-trim-Eigenschaft, mit der Sie steuern können, wie sich die Ränder der Kindelemente eines Containers verhalten. 

Dies sind alles potenziell sehr nützliche Funktionen und wären während der CSS-Dürre der vergangenen Jahre eine große Neuigkeit gewesen. Aber im heutigen Kontext müssen sie um Aufmerksamkeit mit viel größeren Ankündigungen kämpfen, wie dem has()-Selektor oder CSS-Verschachtelung!

Nicht begeistert

Wie Silvestar Bistrović schreibt, ist er „nicht so begeistert von all diesen neuen CSS-Funktionen.“ Dies fand ein Echo auf Twitter, wobei Sara Soueidan feststellte, dass es ihr um „Praktikabilität geht, nicht darum, wie glänzend eine Funktion im Moment aussieht.“

Das mag wie eine negative Einstellung erscheinen, aber ich denke, es ist verständlich. Niemand kann erwartet werden, mit so vielen neuen Funktionen Schritt zu halten!

Eine weitere unbeabsichtigte (oder vielleicht beabsichtigte?) Folge ist, dass, je komplexer CSS wird, desto höher wird die Hürde für jedes neue Unternehmen, das eine Browser-Engine entwickeln möchte – ganz zu schweigen von der zusätzlichen Arbeitsbelastung bei der Wartung und Dokumentation all dieser neuen Funktionen. 

CSS-Übergriff

Es gibt auch die sehr berechtigte Sorge, dass CSS sich in Bereiche ausbreitet, für die es nicht ganz geeignet ist. Das ist etwas anderes, das Sara Soueidan bemerkte, als sie auf die neue experimentelle Implementierung von CSS Toggles reagierte (hier ist ein Ticket, das sie diskutiert)

Viele haben den sehr vernünftigen Punkt gemacht, dass diese Art von Verhalten am besten durch ein neues HTML-Element gehandhabt würde, anstatt den Toggle-Status rein über CSS zu verwalten, und dass CSS möglicherweise nicht das beste Medium ist, um sicherzustellen, dass Barrierefreiheitsfragen ordnungsgemäß behandelt werden. 

Wenn CSS etwas übernimmt, das zuvor durch JavaScript gehandhabt wurde, wird dies im Allgemeinen als gute Sache angesehen, da es oft die Menge an Code reduziert, die der Browser laden muss. Ich bin also vorsichtig optimistisch bezüglich CSS Toggles und vertraue darauf, dass die CSS Working Group die Bedenken der Community ordnungsgemäß berücksichtigt. Aber es könnte eines Tages kommen, an dem wir uns Sorgen machen, dass CSS über seine Grenzen hinausgeht und in die Verantwortungsbereiche von HTML und JavaScript eingreift.

Neue Erwartungen

Und vielleicht muss sich das ändern: Vielleicht sollten wir die Erwartung aufgeben, dass CSS-Entwickler *alles* von CSS kennen müssen? 

https://twitter.com/housecor/status/1577668059652931586

Diese Erwartung stammt aus der Zeit, als CSS ein nachträglicher Gedanke war, diese kleine nervige Syntax, die man lernen musste, um seine Schaltfläche blau und fett zu machen, genau wie der Kunde es verlangte. Aber ich denke, wir müssen akzeptieren, dass das heutige CSS vielleicht einfach viel zu groß ist, als dass eine einzelne Person es meistern könnte, insbesondere zusätzlich zu anderen Frontend-Aufgaben.

Wie Michelle Barker es ausdrückt

Und da lande ich selbst am Ende. Ich habe mich damit abgefunden, dass ich wahrscheinlich nie alle möglichen CSS-Funktionen verwenden – oder sogar davon wissen – werde. Und das kommt von jemandem, der *eine Umfrage zu CSS leitet*!

Aber diese neuen Funktionen werden sicherlich für *jemanden* nützlich sein. Jemand wird Blog-Beiträge darüber schreiben, coole CodePens damit erstellen, Vorträge darüber halten. Diese Person wird ein cooler, junger, energiegeladener Entwickler sein, der noch alle Haare hat. Mit anderen Worten, es wird nicht ich sein – und das ist in Ordnung. 

Und vielleicht machen Sie sich Sorgen, dass dieser neue Entwickler von all den Dingen, die er auf einmal lernen muss, überwältigt sein wird. Aber bedenken Sie all die Dinge, die er *nicht* lernen muss, gerade weil sie durch diese neueren Alternativen ersetzt wurden. Ich würde diesen Handel jederzeit eingehen.

Aber denken Sie darüber nach: In den letzten Jahren gab es nicht nur einen enormen Anstieg der Anzahl von Geräten, die wir berücksichtigen müssen, sondern wir haben auch angefangen zu erkennen, dass wir alle das Web auf etwas unterschiedliche Weise konsumieren, sei es aufgrund von Behinderungen, dem aktuellen Kontext oder einfach persönlichen Vorlieben. Sollte CSS sich nicht an diese neue Realität anpassen?

Nun, ich muss gestehen, das hat mich alles ein wenig nostalgisch gemacht… also entschuldigen Sie mich, während ich ein paar Floats lösche, nur aus alter Gewohnheit.


Wie erwähnt, ist die jährliche State of CSS Umfrage jetzt geöffnet. Egal, ob Sie denken, es gibt zu viel CSS oder nicht, die Umfrage ist eine großartige Möglichkeit, Browserentwicklern mitzuteilen, wie Sie sich fühlen. Füllen Sie sie also aus, wenn Sie 10 Minuten Zeit haben