BEM en naamgevingsconventies voor CSS

BEM en CSS-naamgeving, met een builder voor classnamen | We.Inc

Hoe BEM blocks, elements en modifiers benoemt, met een builder die uw classnamen controleert. Vergelijk BEM met utility classes, CSS Modules en @scope.

BEM en naamgevingsconventies voor CSS

BEM staat voor Block, Element, Modifier. Een block is een zelfstandige component zoals .card, een element is een onderdeel dat alleen binnen dat block zin heeft, geschreven als .card__title met twee underscores, en een modifier is een variant, geschreven als .card--featured met twee koppeltekens. Modifiers worden naast de basisclass toegevoegd, nooit in plaats ervan.

BEM in één tabel

Bij naamgeving blijft een CSS-project netjes of verandert het langzaam in een stapel overrides. Deze pagina legt de BEM-regels uit volgens de officiële BEM-site, controleert uw eigen classnamen terwijl u typt en vergelijkt BEM met de andere manieren waarop teams vandaag voorkomen dat stijlen botsen.

Veelgestelde vragen

Waar staat BEM voor?

Block, Element, Modifier. Het is een naamgevingsmethode voor CSS-classes die elke selector beperkt tot één class, zodat de specificiteit vlak blijft en u aan een classnaam kunt zien bij welke component hij hoort.

Waarom gebruikt BEM dubbele underscores en dubbele koppeltekens?

Enkele koppeltekens worden al binnen namen gebruikt, zoals in search-form. Door de scheidingstekens te verdubbelen, is de grens tussen block, element en modifier eenduidig, zodat .search-form__submit-button leest als één block en één element.

Is BEM nog zinvol met Tailwind of CSS Modules?

Met utility classes schrijft u zelden classnamen voor componenten, dus BEM doet er minder toe. Met CSS Modules geeft de buildtool namen een eigen scope, en korte namen in camelCase worden aangeraden. BEM blijft een sterke keuze voor gewone CSS, Sass, WordPress-thema's en design systems die over frameworks heen worden gedeeld.

Hoe benoem ik een element binnen een element?

Koppel het aan het block, niet aan het bovenliggende element. Een titel in de body van een kaart is .card__title, ook als de HTML hem in .card__body nest. Als het geneste deel op zichzelf herbruikbaar is, maak er dan een nieuw block van.

Het probleem dat naamgevingsconventies oplossen

Als blocks blocks bevatten

Native scoping in CSS haalt in

BEM vergeleken met andere aanpakken

Manieren om te voorkomen dat classnamen botsen

Een volledige BEM-component

Card-block met elements en modifiers

Elke selector is één class. De modifier featured wijzigt de rand en laat één element reageren via de block-modifier.

Veelgemaakte BEM-fouten

Fout en goed

Builder voor BEM-classnamen

Typ een block, element en modifier om classnamen met bijpassende HTML en CSS te krijgen, met waarschuwingen als een naam een regel overtreedt.

Block

Element (optioneel)

Modifier (optioneel)

Block

Element

Modifier

{label}: voeg zelf geen __ of -- toe; de builder voegt de scheidingstekens toe.

{label}: gebruik kleine Latijnse letters, cijfers en enkele koppeltekens.

Elements kunnen geen andere elements bevatten.

Deze namen volgen de BEM-regels.

Kopieer {label}

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap