Как реализовать тему при написании CSS по методологии именования БЭМ?

Я использую соглашение об именах BEM CSS в проекте, над которым работаю. Пока все персиково. Однако мне нужно реализовать несколько тем (имеется в виду несколько разных дизайнов) на одной и той же html-странице. Написание этого:

.name-of-theme .block1 {
    ...
}

.name-of-theme .block2 {
    ...
}

не будет БЭМ, но позволит поместить один модификатор, например, в тег тела.

Написание этого:

.block1--name-of-theme {
   ...
}

.block1--name-of-theme {
   ...
}

будет БЭМ, но также потребует написания большого количества избыточного кода в HTML, поскольку каждый затронутый блок должен быть изменен с помощью дополнительного класса CSS. Это также будет трудно поддерживать.

Есть ли способ решить эту проблему, совместимый с БЭМ, без написания избыточного кода?


person T. Jans    schedule 07.06.2016    source источник
comment
Что ж, вы выбрали БЭМ в качестве системы именования, вас никто не будет бить за то, что вы выбираете имена классов по своему усмотрению, почему бы вам самим не решить, что вы предпочитаете? Неиспользование БЭМ не сделает ваш код нефункциональным.   -  person Clemens Himmer    schedule 07.06.2016
comment
Чтобы ответить на ваш вопрос, нет, БЭМ сам по себе избыточен. И imho BER - довольно плохая система именования, она не позволяет вам наследовать и вкладывать зависимости, что, я думаю, приводит к более чистому коду. Но ведь это основано на мнении.   -  person Clemens Himmer    schedule 07.06.2016
comment
ну, я бы, наверное, ударил себя за то, что не придерживаюсь выбранных мной условностей. но как вы говорите - это все основано на мнении. ура за то, что нашли время.   -  person T. Jans    schedule 08.06.2016
comment
ну, в том-то и дело, что вы выбрали свой метод namimg по какой-то причине, так что я предполагаю, что вы должны знать, что с ним делать;)   -  person Clemens Himmer    schedule 08.06.2016


Ответы (1)


Позвольте мне привести часть часто задаваемых вопросов на bem.info:

вложенность подходит для изменения элементов в зависимости от состояния блока или назначенной ему темы

person tadatuta    schedule 07.06.2016
comment
ваше здоровье! как я мог не заметить это? именно тот ответ, который я искал. - person T. Jans; 08.06.2016