Я опытный человек с CSS, но недавно решил сделать решающий шаг и начать использовать BEM. По большей части я понимаю ценность использования такой плоской системы, избегая чрезмерно специфических селекторов и т. Д. *
Мой вопрос: правильный ли следующий подход? Это работает, технически, но также кажется хрупким:
.badge {
/* additional declarations */
background: rgba(0, 0, 0, 0.2);
}
.badge--error {
background: red;
}
.badge--success {
background: green;
}
Это прекрасно работает из-за каскадной природы CSS. Таким образом, заданный по умолчанию фон успешно перезаписывается модификатором. Но если я помещу модификатор перед первоначальным объявлением, модификатор игнорируется (из-за одинаковой специфичности).
Есть ли проблемы с написанием БЭМ таким способом? Считается ли плохой практикой объявлять значение по умолчанию, например, background
внутри блока, если оно будет перезаписано модификаторами? Должен ли по умолчанию background
в этом случае жить в модификаторе .badge--default
? Или я написал это по-настоящему в стиле БЭМ, а БЭМ фактически использует каскадирование CSS для того, чтобы оставаться плоским?