Ответ 1
Вы говорите, что делаете документ rtl или ltr в зависимости от языка. В этом случае вы можете использовать селектор :lang()
, чтобы отдельные части вашего документа имели стиль в зависимости от языкового стандарта.
- http://www.w3.org/wiki/CSS/Selectors/pseudo-classes/:lang
- http://www.w3.org/TR/css3-selectors/#lang-pseudo
Если вам нужна небольшая поддержка (IE7 +), вы можете использовать селектор атрибутов selector[lang='en']
, хотя это будет проверять только атрибут указанного селектора.
Если вы укажете язык в элементе html (к примеру, с lang="en"
), вы можете просто поставить селектор html перед классом, который вы хотите применить в определенных локалях:
.elem {
margin: 0 10px 0 0;
color: blue;
}
html[lang='en'] .elem {
margin: 0 0 0 10px;
}
Еще лучше, если вы указали атрибут dir
, вы можете напрямую использовать его в css следующим образом:
.elem[dir='rtl'] {
margin: 0 10px 0 0;
}
Обратите внимание, что с классом на элементе body вы всегда будете зависеть от того, что этот класс всегда находится там. Но атрибут dir
и lang
может быть указан в более конкретной области видимости, как один div, и все еще использоваться в css вместе со стилями для "других" направлений чтения.
Edit
Наконец, чтобы взглянуть в будущее, уровень 4 выбора селектора CSS будет содержать тег psuedo, который сможет фильтровать направленность текста. Разумеется, спецификации разрабатываются, и принятие браузерами может занять годы, прежде чем можно будет надежно использовать его: