Was genau ist Atomic CSS?

Avatar of John Polacek
John Polacek am

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

Da Atomic CSS (auch bekannt als Functional CSS) immer beliebter wird, sind einige Verwirrung über ähnliche verwandte Begriffe entstanden. Ziel dieses Artikels ist es, diese Terminologie zu klären.

Es gibt andere Projekte, die den Begriff Atomic verwenden, einschließlich Atomic Web Design von Brad Frost. Atomic CSS ist ein vollkommen eigenständiges Konzept.

Beginnen wir mit der Definition von Atomic CSS

Atomic CSS ist der Ansatz zur CSS-Architektur, der kleine, einzelzweckbezogene Klassen mit Namen bevorzugt, die auf visuellen Funktionen basieren.

Es gibt verschiedene Möglichkeiten, Atomic CSS zu schreiben (siehe Variationen unten). Ein Beispiel wäre dies

.bgr-blue { 
  background-color: #357edd; 
}

Der Begriff „Atomic CSS“ wurde von Thierry Koblenz in seinem grundlegenden Artikel „Challenging CSS Best Practices“ im Oktober 2013 geprägt.

Einige Leute begannen einige Zeit später, diesen Ansatz als „Functional CSS“ zu bezeichnen. Obwohl es in der Vergangenheit Fälle gab, in denen Functional CSS verwendet wurde, um etwas anderes zu beschreiben, werden heute die Begriffe Functional CSS und Atomic CSS austauschbar verwendet.

Während Atomic CSS der Titel eines Open-Source-Projekts war, das auf Thierry's Originalartikel basiert, bezieht sich der Begriff selbst auf die architektonische Philosophie, nicht auf eine einzelne Variation (siehe unten).

Variationen von Atomic CSS

Statisch

Viele Leute schreiben Atomic CSS so, wie sie CSS schon immer geschrieben haben. Es ist üblich, einen Präprozessor zu verwenden, um eine Bibliothek von Klassen mit festgelegten Variationen zu generieren, die ein einheitliches Designsystem für Abstände, Farben, Typografie usw. definieren.

Der Vorteil dieses Stils ist, dass er, da er vertraut ist, eine geringere Eintrittsbarriere hat und für diejenigen, die nicht gut mit CSS vertraut sind, leichter verständlich ist.

Programmatisch

Der programmatische Ansatz für Atomic CSS beinhaltet die Verwendung eines Build-Tools zur automatischen Generierung von Stilen basierend auf dem, was im HTML gefunden wird.

Zum Beispiel, gegeben dies

<!-- Programmatic Atomic CSS Example -->
<div class="Bgc(#0280ae) C(#fff) P(20px)">Lorem ipsum</div>

Der folgende CSS-Code würde generiert werden

.Bgc\(#0280ae\) { background-color: #0280ae; }
.C\(#fff\) { color: #fff; }
.P\(20px\) { padding: 20px; }

Diese Variante von Atomic CSS verwendet die Syntax eines Funktionsaufrufs mit Parametern. Wie das Open-Source-Projekt ACSS zeigt, das Atomizer verwendet, um Stile programmatisch zu generieren, ist es nicht mehr notwendig, überhaupt CSS zu schreiben. Stylesheets, die während des Build-Prozesses generiert werden, sind vollständig optimiert und enthalten keine ungenutzten Stile.

Langform/Kurzform

Der Langform-Stil bevorzugt besser lesbare Klassennamen (siehe Expressive CSS und Solid), während die Kurzform Kürze bevorzugt (siehe Tachyons und Basscss).

/* Shorthand Atomic CSS Examples */

.bg-blue { background-color: #357edd; } 
.f1 { font-size: 3rem; }
.ma0 { margin: 0; }

/* Longhand Atomic CSS Examples */

.bgr-blue { background-color: #357edd; }
.background-blue  { background-color: #357edd; }
.backgroundcolor-blue  { background-color: #357edd; }
.text-h1 { font-size: 3rem; }
.text-3rem { font-size: 3rem; }
.text-huge { font-size: 3rem; }
.fontsize-1 { font-size: 3rem; }
.marg-0 { margin: 0; }
.margin-0 { margin: 0; }

/* Programmatic Shorthand */

Bgc(#357edd) { background-color: #357edd; }

/* Programmatic Longhand */

bgrBlue(#357edd) { background-color: #357edd; }
backgroundBlue(#357edd) { background-color: #357edd; }
backgroundColorBlue(#357edd) { background-color: #357edd; }

Utility-Klassen

Utility-Klassen (auch Helper-Klassen genannt) sind leicht verständliche Klassen mit einer einzigen Funktion, die bei gängigen Styling-Mustern helfen (z. B. .clearfix, .hidden).

Viele CSS-Architekturen basieren auf Utility-Klassen (z. B. Grids, Abstände, Typografie), aber sie umfassen nicht unbedingt vollständig das Konzept von Atomic CSS.

Unveränderliches CSS

Ein Aspekt von Atomic/Functional CSS, bei dem Utility-Klassen niemals verändert werden dürfen, was hochgradig zuverlässige Ergebnisse liefert.

Unveränderlichkeit spielt eine wesentliche Rolle bei der korrekten Ausführung der Atomic CSS-Architektur. Ohne sie riskieren Sie dies

.black {color:navy;}

Atomic CSS verschiebt die Komplexität von Stylesheets in HTML. Wenn Designänderungen in einem Atomic CSS-Projekt auftreten, ist es am besten, gut strukturierte HTML-Vorlagen zu haben, damit Sie beispielsweise ein Bearbeitungswerkzeug verwenden können, um schnell Bgc(colorOne) in Bgc(colorTwo) zu ändern, wo auch immer Sie es benötigen.

Breakpoint-Präfixe

Diese Technik ist eine Möglichkeit, Utility-Klassen zu ermöglichen, Stile an verschiedenen Breakpoints zu überschreiben, um die Implementierung von Responsive Web Design einfach und effizient zu gestalten.

/* Examples of breakpoint prefixing */

.grid-12   /* Full width by default */
.m-grid-6  /* 2 column at medium screen sizes */
.l-grid-4  /* 3 column for large screen sizes */

Erste Schritte

Unten finden Sie eine Liste von Orten, an denen Sie beginnen können, je nachdem, welche Variante Sie bevorzugen.

Zusätzlich sind hier einige grundlegende Artikel, die lesenswert sind

„In The Wild“

Atomic CSS hat an Popularität gewonnen, insbesondere bei denen, die es für schnelles Prototyping und, am anderen Ende des Spektrums, für große, laufende Frontend-Projekte nutzen.


Vielen Dank an Thierry Koblenz für sein Feedback zu diesem Artikel und seine harte Arbeit über die Jahre!