BEM e convenzioni di naming CSS

BEM e convenzioni di naming CSS, con un generatore di classi | We.Inc

Come BEM dà nome a blocchi, elementi e modificatori, con un builder che controlla i nomi delle tue classi. Confronta BEM con utility class, CSS Modules e @scope.

BEM e convenzioni di naming CSS

BEM sta per Block, Element, Modifier. Un blocco è un componente autonomo come .card, un elemento è una parte che ha senso solo al suo interno, scritta .card__title con due underscore, e un modificatore è una variante scritta .card--featured con due trattini. I modificatori si aggiungono accanto alla classe base, mai al suo posto.

BEM in una tabella

Il naming è il punto in cui i progetti CSS restano ordinati oppure si trasformano lentamente in una pila di override. Questa pagina spiega le regole BEM tratte dal sito ufficiale di BEM, controlla i nomi delle tue classi mentre scrivi e confronta BEM con gli altri modi in cui oggi i team evitano che gli stili entrino in conflitto.

Domande frequenti

Cosa significa BEM?

Block, Element, Modifier. È un metodo di naming per le classi CSS che limita ogni selettore a una sola classe, così la specificità resta piatta e dal nome di una classe capisci a quale componente appartiene.

Perché BEM usa doppi underscore e doppi trattini?

I trattini singoli sono già usati dentro i nomi, come in search-form. Raddoppiare i separatori rende inequivocabile il confine tra blocco, elemento e modificatore, così .search-form__submit-button si legge come un blocco e un elemento.

Vale ancora la pena usare BEM con Tailwind o CSS Modules?

Con le utility class scrivi raramente nomi di classe per i componenti, quindi BEM conta meno. Con CSS Modules è lo strumento di build a isolare i nomi per te, e sono consigliati nomi brevi in camelCase. BEM resta un'ottima scelta per CSS puro, Sass, temi WordPress e design system condivisi tra framework.

Come do il nome a un elemento dentro un elemento?

Collegalo al blocco, non all'elemento genitore. Un titolo dentro il corpo di una card è .card__title, anche quando l'HTML lo annida dentro .card__body. Se la parte annidata è riutilizzabile da sola, rendila invece un nuovo blocco.

Il problema che risolvono le convenzioni di naming

Quando i blocchi contengono blocchi

Lo scoping nativo del CSS sta recuperando terreno

BEM a confronto con altri approcci

Modi per evitare conflitti tra nomi di classe

Un componente BEM completo

Blocco card con elementi e modificatori

Ogni selettore è una sola classe. Il modificatore featured cambia il bordo e permette a un elemento di reagire tramite il modificatore del blocco.

Errori comuni con BEM

Sbagliato e giusto

Generatore di nomi di classe BEM

Scrivi un blocco, un elemento e un modificatore per ottenere nomi di classe, HTML e CSS corrispondenti, con avvisi quando un nome viola una regola.

Blocco

Elemento (facoltativo)

Modificatore (facoltativo)

Blocco

Elemento

Modificatore

{label}: non inserire tu __ o --; i separatori li aggiunge il builder.

{label}: usa lettere latine minuscole, cifre e trattini singoli.

Gli elementi non possono contenere altri elementi.

Questi nomi rispettano le regole BEM.

Copia {label}

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito