Целевой брат с модификатором - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть класс .track с классом bem &__waveform, внутри которого должно быть возвращено .track__waveform, но родительский класс .track также может иметь .active на нем, как мне настроить таргетинг &__waveform внутри модификатора .active?

.track {
  &__waveform {
    display: none;
  }
  &.active {
   &__waveform {
    display: block;
   }
  }
}

Мне нужно вывести

.track.active .track__waveform {
  display:block;
}

Я могу сделать это, просто поместив полный класс .track__waveform внутри класса .active, но я чувствую, что должен быть способ использовать детский комбинатор.

Ответы [ 3 ]

2 голосов
/ 16 апреля 2019
.track {
    &.active &__waveform {
        display: block;
    }
}
1 голос
/ 16 апреля 2019

.track {
    &.active {
        .track__waveform {
            display: block;
        }
    }
}

вот и все ...

0 голосов
/ 16 апреля 2019

Класс .active должен быть модификатором: .track--active

Таким образом, необходимый селектор должен быть .track--active track__waveform.

Один из способов сделать это с вложением sass:

.track {
    $block: &;

    &--active {
        #{$block}__waveform {
            display: block;
        }
    }
}
...