BEM und CSS-Namenskonventionen

BEM und CSS-Namenskonventionen, mit Klassennamen-Builder | We.Inc

Wie BEM Blocks, Elements und Modifier benennt, mit einem Builder, der deine Klassennamen prüft. Vergleiche BEM mit Utility-Klassen, CSS Modules und @scope.

BEM und CSS-Namenskonventionen

BEM steht für Block, Element, Modifier. Ein Block ist eine eigenständige Komponente wie .card, ein Element ist ein Teil, der nur innerhalb des Blocks Sinn ergibt, geschrieben als .card__title mit zwei Unterstrichen, und ein Modifier ist eine Variante, geschrieben als .card--featured mit zwei Bindestrichen. Modifier werden neben der Basisklasse ergänzt, niemals statt ihr.

BEM in einer Tabelle

An der Benennung entscheidet sich, ob CSS-Projekte aufgeräumt bleiben oder langsam zu einem Haufen von Überschreibungen werden. Diese Seite erklärt die BEM-Regeln von der offiziellen BEM-Website, prüft deine eigenen Klassennamen während des Tippens und vergleicht BEM mit den anderen Wegen, mit denen Teams heute verhindern, dass sich Styles in die Quere kommen.

Häufige Fragen

Wofür steht BEM?

Block, Element, Modifier. Es ist eine Benennungsmethode für CSS-Klassen, die jeden Selektor auf eine einzige Klasse beschränkt. So bleibt die Spezifität flach, und du erkennst am Klassennamen, zu welcher Komponente er gehört.

Warum verwendet BEM doppelte Unterstriche und doppelte Bindestriche?

Einfache Bindestriche werden bereits innerhalb von Namen verwendet, wie in search-form. Doppelte Trennzeichen machen die Grenze zwischen Block, Element und Modifier eindeutig, sodass sich .search-form__submit-button als ein Block und ein Element lesen lässt.

Lohnt sich BEM noch mit Tailwind oder CSS Modules?

Mit Utility-Klassen schreibst du selten Klassennamen für Komponenten, BEM spielt also eine kleinere Rolle. Bei CSS Modules übernimmt das Build-Tool das Scoping der Namen für dich, und kurze camelCase-Namen werden empfohlen. Für reines CSS, Sass, WordPress-Themes und Designsysteme, die über Frameworks hinweg geteilt werden, ist BEM weiterhin eine starke Wahl.

Wie benenne ich ein Element innerhalb eines Elements?

Hänge es an den Block, nicht an das übergeordnete Element. Ein Titel im Body einer Karte heißt .card__title, auch wenn das HTML ihn in .card__body verschachtelt. Ist der verschachtelte Teil für sich wiederverwendbar, mach stattdessen einen neuen Block daraus.

Das Problem, das Namenskonventionen lösen

Wenn Blocks Blocks enthalten

Natives CSS-Scoping holt auf

BEM im Vergleich mit anderen Ansätzen

Wege, Kollisionen von Klassennamen zu vermeiden

Eine vollständige BEM-Komponente

Card-Block mit Elements und Modifiern

Jeder Selektor ist eine Klasse. Der Modifier featured ändert den Rahmen und lässt ein Element über den Block-Modifier darauf reagieren.

Häufige BEM-Fehler

Falsch und richtig

BEM-Klassennamen-Builder

Gib Block, Element und Modifier ein, um Klassennamen samt passendem HTML und CSS zu erhalten, mit Warnungen, wenn ein Name gegen eine Regel verstößt.

Block

Element (optional)

Modifier (optional)

Block

Element

Modifier

{label}: Füge __ oder -- nicht selbst ein, der Builder ergänzt die Trennzeichen.

{label}: Verwende lateinische Kleinbuchstaben, Ziffern und einfache Bindestriche.

Elements können keine anderen Elements enthalten.

Diese Namen folgen den BEM-Regeln.

{label} kopieren

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap