Задать вопрос

Проблемы реализации подхода БЭМ с Sass 3.1.8?

По идеологии БЭМ стоит по возможности отказываться от наследования в css (так как это медленно и опасно, скажем так). Т.е вместо

.block{}
  .block .header{}
  .block .content{}


Следует писать так

.block{}
  .block_header{}
  .block_content{}


Для верстки используем compass основанный на sass. Раньше БЭМ легко реализовывался через sass c помощью & (sass подставлял родительский селектор на место амперсанда):

.block
  &_header
  &_content


Преобразовывался в нужный нам

.block{}
  .block_header{}
  .block_content{}


Но начиная с версии sass 3.1.8 амперсанд подставляет родительский селектор, только в валидное выражение.
Deprecate parent selectors followed immediately by identifiers (e.g. &foo). This should never have worked, since it violates the rule of & only being usable where an element selector would.


Следствием этого является то, что, видя конструкцию &_header, sass ставит пробел после амперсанда и мы получаем на выходе нерабочее правило:

.block _header{}

Внимание вопрос: если кто сталкивался, было ли найдено решение, кроме как сидеть на старой версии sass, либо повторять все имена родительских селекторов вручную?
  • Вопрос задан
  • 6266 просмотров
Подписаться 6 2 комментария
Подписчики вопроса 6 К ответам на вопрос (2)