Задать вопрос
ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer

Почему амперсанд не компилирует вложенность?

Все мои компоненты вёрстки пишутся на БЭМ, каждый новый блок я начинаю примерно с такого кода:
.footer{
  width: 100%;
  position: relative;
  &__plate{
    position: relative;
    z-index: 3;
    @extend %plate;
  }
}

По идее стили для footer__plate должны компилироваться с вложенностью:
.footer{
  width: 100%;
  position: relative;
}
.footer .footer__plate{
  position: relative;
  z-index: 3;
 ...
}

Но компилятор почему-то делает так:
.footer{
  width: 100%;
  position: relative;
}
.footer__plate{
  position: relative;
  z-index: 3;
 ...
}

Я заметил это недавно - оно особо не мешает, ибо БЭМ классы никогда не повторяются. Однако тем не менее это отходит от правил методологии. Ведь если в каком-то левом блоке появтися footer__plate, то стили к нему применятся. К тому же частенько приходится наследовать элементы каркасов, которые повторяются. Я выношу их в тихий класс, чтоб сам элемент каркаса не падал в компил. Если я наследую элемент каркаса с модификатором в элемент блока приходится пользоваться !important как раз из-за этого недочёта. Есть ли способ сказать компилятору что надо создать вложенность, если она есть в коде независимо об амперсанда?
  • Вопрос задан
  • 753 просмотра
Подписаться 1 Оценить 12 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Профессиональная вёрстка на HTML и CSS
    3 месяца
    Далее
  • Stepik
    Основы HTML и CSS
    2 недели
    Далее
  • OTUS
    HTML/CSS
    3 месяца
    Далее
Решения вопроса 1
dom1n1k
@dom1n1k
Все работает так, как и должно. Откуда взято это "по идее"?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы