@photosho

Как работать с БЭМ и Sass в случае со вложенными элементами?

Как подружить БЭМ и Sass в случае со вложенными элементами и необходимостью стилизовать по псевдоклассу (например, hover)? Вот пример ситуации:

<div class="block">
  <div class="block__element-1">
    <div class="block__element-2">
    </div>
  </div>
</div>

.block {
  &__element-2 {
    ...
  }
  
  &__element-1 {
    ...
    &:hover {
        /* Стили element-2 */
    }
  }
}


Получается, внутри стилей "hover" нужно писать имя класса полностью: ".block__element-2", и при повышении вложенности ситуация усугубляется. Если изменится имя блока, то его нужно будет менять во всех таких местах.
  • Вопрос задан
  • 458 просмотров
Решения вопроса 2
delphinpro
@delphinpro Куратор тега CSS
frontend developer
.block {
  &__element-2 {}
  &__element-1 {}
  &__element-1:hover &__element-2 {}
}


.block {
  $this: &;
  &__element-2 {}
  &__element-1 {
    &:hover #{$this}__element-2 {}
  }
}


и при повышении вложенности ситуация усугубляется


Не нужно увеличивать вложенность. Это противоречит идеологии БЭМ.
Ответ написан
Комментировать
iiiBird
@iiiBird Куратор тега CSS
Пока ты спишь - твой конкурент совершенствуется
& можно засунуть в переменную. пример https://codepen.io/colinlord/pen/KozWWP/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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