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