Всем доброго Как правильнее поступить с точки зрения БЭМ-методологии, чтобы не вводить в ступор опытных разработчиков, и придерживаться классических стандартов? Задачу можно решить разными способами, и именно в этом подвох:
Есть несколько блоков, очень похожих между собой. Пускай это будут куски страницы с разным цветом фона (каждый такой кусок является блоком). А внутри — текстовые элементы (заголовки, списки, параграфы…), которые, в зависимости от фона, нужно выводить разным цветом. Напрашивается вывод об использовании модификаторов.
Т.е. для начала описываем дефолтный (базовый) блок и все его элементы: получается следующий HTML div.b_block>p.b_block__elem
, и два стиля впридачу .b_block {…}, .b_block__elem {…}
Но как быть с, к примеру, с инверсной модификацией, когда цвет блока и текста меняются местами?
Что если применить модификатор только к блоку, т.е. div.b_block.b_block--inverted>p.b_block__elem
, и селектором .b_block--inverted .b_block__elem { задать стили элементу }
(подразумевается, что есть также стиль .b_block--inverted {…}
)? С таким же успехом можно навесить модификатор и на блок, и на элемент сразу. Или использовать два разных модификатора — один для блока, а другой для элементов.
Вот только как правильнее?
Пример очень упрощен, но хорошо отражает суть моего ступора. Спасибо
Привет!
Ответ на этот вопрос есть в разделе ЧаВо на bem.info: https://ru.bem.info/faq/#Почему-нежелательно-использовать-вложенные-селекторы (см. вторую часть ответа ;))