BEM et conventions de nommage CSS

BEM et conventions de nommage CSS, avec générateur de classes | We.Inc

Comment BEM nomme les blocs, éléments et modificateurs, avec un générateur qui vérifie vos noms de classes. Comparez BEM avec les classes utilitaires, les CSS Modules et @scope.

BEM et conventions de nommage CSS

BEM signifie Block, Element, Modifier (bloc, élément, modificateur). Un bloc est un composant autonome comme .card, un élément est une partie qui n'a de sens qu'à l'intérieur du bloc, écrite .card__title avec deux tirets bas, et un modificateur est une variante écrite .card--featured avec deux traits d'union. Les modificateurs s'ajoutent à côté de la classe de base, jamais à sa place.

BEM en un tableau

C'est au nommage que les projets CSS restent propres ou deviennent peu à peu un empilement de surcharges. Cette page explique les règles BEM issues du site officiel de BEM, vérifie vos propres noms de classes pendant la saisie et compare BEM aux autres méthodes utilisées aujourd'hui par les équipes pour éviter les collisions de styles.

Questions fréquentes

Que signifie BEM ?

Block, Element, Modifier, soit bloc, élément, modificateur. C'est une méthode de nommage des classes CSS qui limite chaque sélecteur à une seule classe : la spécificité reste plate et le nom d'une classe indique à quel composant elle appartient.

Pourquoi BEM utilise-t-il des doubles tirets bas et des doubles traits d'union ?

Les traits d'union simples servent déjà à l'intérieur des noms, comme dans search-form. Doubler les séparateurs rend la frontière entre bloc, élément et modificateur sans ambiguïté : .search-form__submit-button se lit comme un bloc et un élément.

BEM vaut-il encore la peine avec Tailwind ou les CSS Modules ?

Avec des classes utilitaires, vous écrivez rarement des noms de classes de composants, BEM compte donc moins. Avec les CSS Modules, l'outil de build isole les noms pour vous, et des noms courts en camelCase sont recommandés. BEM reste un excellent choix pour le CSS pur, Sass, les thèmes WordPress et les design systems partagés entre frameworks.

Comment nommer un élément à l'intérieur d'un élément ?

Rattachez-le au bloc, pas à l'élément parent. Un titre dans le corps d'une carte s'écrit .card__title, même si le HTML l'imbrique dans .card__body. Si la partie imbriquée est réutilisable seule, faites-en plutôt un nouveau bloc.

Le problème que résolvent les conventions de nommage

Quand des blocs contiennent des blocs

La portée native du CSS rattrape son retard

BEM comparé aux autres approches

Façons d'éviter les collisions de noms de classes

Un composant BEM complet

Bloc carte avec éléments et modificateurs

Chaque sélecteur est une seule classe. Le modificateur featured change la bordure et permet à un élément de réagir via le modificateur du bloc.

Erreurs BEM courantes

Incorrect et correct

Générateur de noms de classes BEM

Saisissez un bloc, un élément et un modificateur pour obtenir les noms de classes, le HTML et le CSS correspondants, avec des avertissements quand un nom enfreint une règle.

Bloc

Élément (facultatif)

Modificateur (facultatif)

Bloc

Élément

Modificateur

{label} : n'ajoutez pas vous-même __ ou -- ; le générateur ajoute les séparateurs.

{label} : utilisez des lettres latines minuscules, des chiffres et des traits d'union simples.

Les éléments ne peuvent pas contenir d'autres éléments.

Ces noms respectent les règles BEM.

Copier {label}

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site