Я использую соглашение об именах BEM CSS в проекте, над которым работаю. Пока все персиково. Однако мне нужно реализовать несколько тем (имеется в виду несколько разных дизайнов) на одной и той же html-странице. Написание этого:
.name-of-theme .block1 {
...
}
.name-of-theme .block2 {
...
}
не будет БЭМ, но позволит поместить один модификатор, например, в тег тела.
Написание этого:
.block1--name-of-theme {
...
}
.block1--name-of-theme {
...
}
будет БЭМ, но также потребует написания большого количества избыточного кода в HTML, поскольку каждый затронутый блок должен быть изменен с помощью дополнительного класса CSS. Это также будет трудно поддерживать.
Есть ли способ решить эту проблему, совместимый с БЭМ, без написания избыточного кода?