Сейчас пишу селекторы в таком порядке:
.block-class {
@include some-mixin();
some-rule: value;
another-rule: value;
&:hover {
// ...
}
@media ... {
// ...
}
&_modifier {
// ...
}
&__element {
// ...
}
&__another-element {
// ...
}
}
Но, например, если при
.block:hover
(или
.block_modifier
) нужно изменить вложенный
.block__element
, то получается, что это правило задано раньше самого
.block__element
. Stylelint при стандартных настройках ругается на "no-descending-specificity", да и запутаться можно.
Если переместить все
:hover
и
&_modifier
в конец, то "no-descending-specificity" починится, но становится тупо неудобно — нужно пролистать весь файл, чтобы понять, есть ли вообще состояния у элемента.
Да, знаю, что не совсем по БЭМ, но иногда с JS навешивать модификаторы на каждый элемент при hover — оверкилл.
Сам вопрос: в каком порядке пишете вы?