PassFront
  1. PassFront
  2. База знаний
  3. Основы CSS

В чем разница между использованием BEM и Scoped-стилей?

Основы CSS

БЭМ решает конфликт имён соглашением об именовании классов, scoped-стили — автоматически, на этапе сборки.

БЭМ

.card {}
.card__title {}
.card--featured {}
  • Работает в любом проекте, не требует сборки.
  • Зависит от дисциплины команды: ошибка в имени — и стили пересекаются.
  • Длинные имена классов.

Scoped-стили (Vue scoped, CSS Modules)

<style scoped>
.title { color: red; }
</style>
  • Сборщик добавляет уникальный атрибут или хеш — стили не выходят за компонент.
  • Короткие имена, меньше договорённостей.
  • Сложнее стилизовать дочерние компоненты (нужен :deep()), привязка к инструменту.

Как выбирать

В компонентных фреймворках обычно хватает scoped или CSS Modules. БЭМ полезен для глобальных стилей, библиотек и вёрстки без сборки. Подходы можно сочетать.

Коротко для собеседования

БЭМ изолирует стили договорённостью об именах, scoped-стили — автоматически через сборку; второй проще, первый не зависит от инструментов.

Подробнее: БЭМ — Методология

Другие вопросы раздела