Skalierung von CSS: Zwei Seiten eines Spektrums

Avatar of Chris Coyier
Chris Coyier am

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

Das Thema der Skalierung von CSS wurde in einer kürzlichen ShopTalk Show mit Ben Frain viel diskutiert. Ben hat sich viele Gedanken zu dem Thema gemacht und sogar ein ganzes Buch darüber geschrieben, Enduring CSS, das sich um eine ganze ECSS-Methodik dreht.

Er sprach darüber, wie es im Wesentlichen zwei Lösungen für das Styling in großem Umfang gibt

  1. Totale Isolation
  2. Totale Abstraktion

Totale Isolation ist irgendeine Form des Schreibens von Stilen, die auf eine von Ihnen eingerichtete Grenze (wie eine Komponente) beschränkt sind, aus der diese Stile nicht nach außen oder innen durchdringen.

Totale Abstraktion ist irgendeine Form des Schreibens von Stilen, die global, aber so generisch und wiederverwendbar sind, dass sie keine unbeabsichtigten Nebenwirkungen haben.

Totale Isolation kann aus <style scoped> in einer .vue-Datei, CSS Modules, bei denen CSS-Klassen-Selektoren und HTML-Klassen-Attribute dynamisch generierter Kauderwelsch sind, oder einem CSS-in-JS-Projekt wie glamerous stammen. Selbst streng befolgte Namenskonventionen wie BEM können eine Form der totalen Isolation sein.

Totale Abstraktion kann aus einem Projekt wie Tachyons stammen, das Ihnen eine feste Menge an Klassennamen zum Stylen gibt (Tailwind ist eine konfigurierbare Version davon), oder ein programmatisches Werkzeug (wie Atomizer), das speziell benannte HTML-Klassenattribute in ein Stylesheet mit genau dem verwandelt, was es benötigt.

Es ist der Mittelweg, der Probleme hat. Es ist die Verwendung einer Namensmethodik, aber ohne sich streng daran zu halten. Es ist die Verwendung einiger Stile in Komponenten, aber auch ein globales Stylesheet, das zufällige andere Dinge tut. Oder es tragen viele Entwickler zu einem Styling-System bei, das keine strengen Regeln hat und globale und isolierte Stile mischt. Jedes Stylesheet das wächst und wächst und wächst. Es durch das Entfernen ungenutzter Stile zu bekämpfen, ist keine wirkliche Lösung (und hier ist der Grund).

Beachten Sie, dass das Web ein großer Ort ist und nicht alle Projekte eine Skalierungslösung benötigen. Eine riesige Codebasis mit Hunderten von Entwicklern, die jahrzehntelang gewartet werden muss, tut das absolut. Meine persönliche Website tut das nicht. Ich hatte meinen fairen Anteil an Styling-Problemen, aber ich war nie so gelähmt, dass ich etwas so Strenges wie Atomic CSS (et al.) implementieren musste, um Arbeit zu erledigen. Noch bei keinem Job, den ich bisher hatte. Ich sehe aber die Vorteile.

Stellen Sie sich die Größe von Twitter.com über ein Jahrzehnt vor! Nicolas hat einen tollen Thread, in dem er Twitters PWA mit Twitters Legacy-Desktop-Website vergleicht.

Das CSS der Legacy-Website ist das Ergebnis, wenn Hunderte von Leuten über viele Jahre hinweg direkt CSS schreiben. Spezifitätskriege, Redundanz, ein Kartenhaus, das nicht repariert werden kann. Das Ergebnis ist ein extrem ineffizientes und fehleranfälliges Styling, das sowohl Benutzer als auch Entwickler bestraft.