Для языков стилей, кажется, что обычной практикой является использование [lang=en]
(или :lang(en)
).
Однако это соглашение может вызвать проблемы с модификаторами BEM, особенно.Рассмотрим этот CSS:
.block__element {
font-size: 12px;
}
[lang=ar] .block__element {
font-size: 14px;
}
.block__element--small {
font-size: 10px;
}
В этом случае, если у нас есть block__element
с lang
, который не ar
, он будет иметь размер шрифта 12px.Если он также имеет модификатор --small
, он будет иметь размер шрифта 10.
Однако, если lang
страницы равен ar
, размер шрифта будет 14px независимо от модификатора .Это связано со спецификой CSS.
Таким образом, чтобы противостоять этому, разработчик может добавить новое правило, которое просто переведет его block__element--small
на арабском языке на 10px:
.block__element {
font-size: 12px;
}
[lang=ar] .block__element {
font-size: 14px;
}
.block__element--small {
font-size: 10px;
}
// ^ Basically the same as this but more specific
[lang=ar] .block__element--small {
font-size: 10px;
}
Этодалеко от идеала.
Есть ли более умный способ справиться с этой ситуацией, чтобы избежать переопределения стилей для каждого такого случая?(Что особенно для проектов RTL + LTR, может быть очень распространено)