У меня такая БЭМ-установка:
.mytable {
font-size: 16px;
margin: 30px 0;
&--standard {
border: 1px solid red;
&__row {
border: 1px solid blue;
}
}
Я пытаюсь применить стили строк только к измененному классу таблицы.
Это выводит следующие
.mytable--standard__row {
border: 1px solid blue;
}
Это явно не то, чего я пытаюсь достичь.
Есть ли аккуратный / стандартный способ решить эту проблему?
Какая цель? Вы хотите применить стили к строкам в таблице? Ваш запрос не понятен.
"который явно неверен" нет, этот селектор и его правила правильно сгенерированы из предоставленного вами sass. Кроме того, это подходящий способ работы с модификаторами в БЭМ *. Как вы думаете, какой селектор нужно создать? (* существует несколько вариантов БЭМ, поэтому может быть, что в некоторых случаях этот селектор нежелателен, вам нужно указать, какой вариант вы используете).

Мы используем:
.mytable {
font-size: 16px;
margin: 30px 0;
&--standard {
border: 1px solid red;
}
&--standard &__row {
border: 1px solid blue;
}
}
Это не идеально (неплохо было бы выбрать дедушку и бабушку &&), но это лучшее, что мы могли придумать до сих пор.
Вы можете добавить еще один амперсанд после модификатора, чтобы получить желаемый результат:
.mytable {
font-size: 16px;
margin: 30px 0;
&--standard {
border: 1px solid red;
}
&--standard & { //<--
&__row{
border: 1px solid blue;
}
&__some-other-element{}
}
}
Отличный ответ и, насколько я понимаю, не так хорошо известен и не задокументирован.
не могли бы вы написать ожидаемые результаты, чтобы понять ваши потребности