bobahvas
@bobahvas
Senior Full Stack Developer

Как подружить БЭМ, БЭМ модификаторы, SCSS и каскадность?

Очень часто нужно поменять состояние внешнего блока.
Например когда мы фокусим элемент, дизейблим, делаем доступным только для чтения и т.д.
Если применять методологию БЭМ - нужно ввести модификатор. А значит основному элементу мы добавляем модификатор. Но вот незадача, у нас несколько вложенных элементов. И все они должны поменять стили, а не только родительский элемент.

Вот подскажите, пожалуйста, как согласовать эти модификаторы БЭМ с каскадностью (с вложенными элементами) и SCSS. Дублировать имя родителя - не самое лучшее решение.

<div class="my-select my-select_disabled">
    <div class="my-select__header">...</div>
    <div class="my-select__list">...</div>
</div>


.my-select {
    &__header {
        //...
    }

    &__list {
        //...
    }

    &_disabled {
        // Когда отключен весь селект
        // поменять цвет для my-select__header
        // поменять цвет для my-select__list
    }
}
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега Sass
frontend developer
Проблема в записи на scss, правильно?

Есть два варианта:

.my-select {
    &__header { }
    &__list { }

    &_disabled { }
    &_disabled &__header { }
    &_disabled &__list { }
}


.my-select {
    $this: &;
    &__header { }
    &__list { }

    &_disabled {
        #{$this}__header { }
        #{$this}__list { }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы