Имеет ли смысл использование SCSS при именовании классов по BEM?

Ссылка скопирована
19 февраля 2026 1 ответ

Есть такой SCSS-код (вложенность блоков с именованием классов по BEM):

.banner { 	свойства 	&__text { 		свойства 	} 	&__img { 		свойства 	} }

.banner { свойства &__text { свойства } &__img { свойства } }

Есть ли смысл в таком написании стилей, использую вложенность при именовании классов по BEM?
Или лучше делать без вложенности?

.banner { 	свойства }  .banner__text { 	свойства }  .banner__img  { 	свойства }

.banner { свойства } .banner__text { свойства } .banner__img { свойства }

Т.к. например, при правке стилей класс найти проще, если стили написаны без вложенности.

Дополнительно:

имеет смысла делать так как тебе удобноделают в твоей команде
если тебе кажется - что использовать scss не имеет смысла/затруднительно, не имеет смысла его использовать (для чего?)

  • Т.к. например, при правке стилей класс найти проще, если стили написаны без вложенности.

    Поддерживаю второй вариант.

    А так да, в зависимости от кодгайда, принятого в команде или указанного в ТЗ. Если его нет, то как вам больше нравится.

  • Без вложенности будет осложнена навигация, как только появятся модификаторы
  • Это вкусовщина.
    Моё мнение - первый вариант: весь код конкретного блока в одном месте, можно свернуть его и он не будет мешать.
    Проблема с поиском - не проблема: все IDE умеют работасть с scss или из коробки или через плагины, всё находится в один клик.
  • Ответы:

    Во всех больших проектах, в которых я работал, использовали первый вариант.

    Как тут верно заметили - искать нужный стиль, при таком подходе по всей кодовой базе может быть не удобно или даже вообще нереально в некоторых случаях. Все россказни про "один файл - один класс" это тоже бред... Бывает так что компонентов в проекте тысяча и невозможно знать какой конкретно компонент рисует нужный элемент. А как его искать непонятно, потому что там может не быть строк, например.

    Что касается моего мнения, так БЭМ это в принципе шизофрения, эти нижние слэши делают из стилей мусор.

    • Последний абзац… как я поддерживаю
    • Что касается моего мнения, так БЭМ это в принципе шизофрения, эти нижние слэши делают из стилей мусор.

      БЭМ это лучшее что придумало человечество, если у вас получается мусор, значит вы что-то делаете не так.

    • Виталий Першин, если вам нужен БЭМ, значит вы не понимаете одного из базовых принципов CSS.
    • Никита Геннадич

      Разработчики всего мира:
      Проводят исследования, разрабатывают методологию БЭМ, согласованно решают поставленные задачи.

      Рандомный чел с хабра:

      если вам нужен БЭМ, значит вы не понимаете одного из базовых принципов CSS.

    • Виталий Першин, хспде, какая чушь...

      Во-первых, БЭМ придуман не "разработчиками всего мира", а в Яндексе, для их специфичных задач и видимо он им был в тот момент полезен, потому что если вы поизучаете код их проектов, сейчас они сами им далеко не везде пользуются.

      Во-вторых, аппеляция к авторитету это впечатляющий уровень дискуссий. Извините, мне не очень интересно в подобном участвовать.

    • Никита Геннадич, Вы просто лишний раз подчеркнули свою некомпетентность в данном вопросе. Ведь БЭМ это одна из концепций у которой есть другие аналоги, в частности SMACSS. Данный концепция давно вышла за пределы Яндекса и набрала популярности именно благодаря тому, что здраво мыслящие люди могут оценить её преимущества. А чтобы не получался мусор, как вы сами сказали, нужно просто научиться, понять и тогда все станет на свои места. Все это опыт многих разработчиков из разных компаний, который в какой-то момент задокументировали и дали название.

      сейчас они сами им далеко не везде пользуются.

      То есть вы думаете раз они разработали методологию, то можно остановится и дальше ничего не делать? Они дальше работают и пробуют что-то новое именно поэтому на свет появляются разные концепции от атомарного css до методологий по типу БЭМ.

      Сейчас уже не вспомню, но пару лет назад гугл в одном из своих проект использовал именно БЭМ и об этом была статья. Так что не надо думать, что все идиоты и один вы "понимаете один из базовых принципов CSS"

      Я даже спрашивать не хочу, что там за принцип такой, который не позволяет использовать БЭМ, чтобы лишний раз "рука-лицо" не делать.

    • Виталий Першин, вы чота смысл написанного походу слабо улавливаете.

      То есть вы думаете раз они разработали методологию, то можно остановится и дальше ничего не делать?

      Никто не говорил что они ничего не делают, вы это сами нафантазировали? Вопрос другой - если БЭМ столь хорош, то почему же они сами перестают его использовать?

      В целом ваш уровень аргументации "а вот такое даже в гугле использовали" (а весь ваш трёп к этому и сводится), говорит о том, что вы в принципе не особо понимаете как веб работает. Мне на таком уровне дискутировать интереса нету, извините.

    • Никита Геннадич, Просто у меня есть аргументы на любой ваш выпук, а вы только юлите, как обычный диванный "эксперт".

      Мне на таком уровне дискутировать интереса нету, извините.

      Извиняю, поэтому и общаюсь с вами, чтобы хоть немного поднять ваш уровень.

    BEM имеет смысл!

    • От бэма смысла не больше, чем от этого ответа

    Лично мне использование амперсанда принесло больше вреда чем пользы, поэтому я придерживаюсь второго варианта:

    .banner {   свойства }  .banner__text {   свойства }  .banner__img  {   свойства }

    .banner { свойства } .banner__text { свойства } .banner__img { свойства }

    Даже если каждый блок разбит на отдельные файлы поиск в самом файле намного проще, при этом можно использовать глобальный поиск по проекту и сразу переходить к нужному классу.

    Но SCSS это не только амперсанд, поэтому одно другому не мешает, хотя я использую только postCSS

    • А если блоки не разбиты на файлы, то функциональность Code Folding позволяет свернуть весь блок, облегчая визуальную навигацию по файлу. В вашем случае такой возможности нет.
    • Сергей delphinpro, Если блоки не разбиты на файлы, можно только посочувствовать

    Т.к. например, при правке стилей класс найти проще, если стили написаны без вложенности.

    Почему? Если вы придерживаетесь правила - один класс- один файл, то вам всего лишь нужно кликнуть по селектору блока и вы перейдете в нужный файл. А там найти элемент не сложно.

    • Для VSC есть даже плагин который "понимает" сасс селекторы и позволяет "go to defenition" с разметки на любой такой с parent-селектором
    • imko, и так и так два хода.
      Либо открыть файл блока и в нем элемент.
      Либо найти сначала в разметке, потом кликнуть и попасть в стили.
    • Ankhena, ну это со старта) а если уже в разметке че-то пишешь то один. Еще помогает в говнопроектах, где селекторов под которые попадает элемент миллион в миллионе мест)
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Мария Код Ответ

    Использование SCSS при именовании классов по методологии BEM имеет свои преимущества и может быть очень полезным для удобства и эффективности работы над проектом.

    SCSS (Sassy CSS) предоставляет множество возможностей для упрощения написания и организации CSS кода. Одним из основных преимуществ SCSS является возможность использования переменных, вложенности, миксинов, операторов и других функций, которые делают код более читаемым, удобным для поддержки и масштабирования.

    При использовании SCSS в сочетании с методологией BEM (Block Element Modifier) можно значительно улучшить структуру CSS кода. Например, можно создать миксины для генерации классов блоков, элементов и модификаторов, что сделает процесс именования классов более автоматизированным и уменьшит вероятность ошибок.

    Преимущества использования SCSS при именовании классов по BEM:

    1. Возможность использования переменных для хранения значений цветов, шрифтов, отступов и других стилей, что упростит их переиспользование и изменение.
    2. Вложенность для более четкой структуры стилей и иерархии элементов.
    3. Миксины для генерации повторяющихся стилей, что сократит объем кода и упростит его поддержку.
    4. Возможность создания функций для генерации динамических стилей на основе переменных или условий.

    Таким образом, использование SCSS при именовании классов по BEM может значительно улучшить организацию и эффективность CSS кода, сделать его более читаемым, масштабируемым и удобным для разработки.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно