Обновление: взгляните на Guard Expressions в LESS - возможно, это может немного помочь, вы можете создавать своего рода условные операторы, но вы должны использовать mixins.
Я понимаю вашу точку зрения, но с другойстороны я бы подошел к этой проблеме по-другому.Вот еще один упрощенный подход - вы определяете переменные для различий в обоих случаях, а затем импортируете их по своему желанию - например, помещаете в master-ltr / master-rtl и импортируете остальные таблицы стилей после:
// master-ltr.less
// LTR:
@sidebar-pos-left: 10px;
@sidebar-pos-right: 0px;
@content-float: left;
...
@import 'styles.less';
// your styles.less would have:
.content {
float: @content-float;
...
}
.sidebar {
position: relative;
left: @sidebar-pos-left;
right: @sidebar-pos-right;
...
}
.. или может быть более эффективным - создайте отдельный файл с помощью vars-ltr / rtl, а затем импортируйте его в ваш master-ltr / rtl.
Не уверен, насколько сложен макет, но, возможно, это даст вам что-томожно использовать?
Я пробовал это с использованием String Interpolation , но похоже, что переменные могут быть встроены только в "переменную" часть определения.Я могу ошибаться, может быть, люди знают, как этого добиться.
Я бы сделал это немного иначе, не потому, что это невозможно с LESS, но из-за организации кода и общего более разумного подхода (этонехорошо называть что-то «левым», когда иногда это будет на самом деле «правым»:)
Для вашей второй проблемы с position:relative
вот мой вариант:
<div class="element element-ltr">...</div>
.element {
position: relative;
&.element-ltr {
left: @element-side-position;
}
&.element-rtl {
right: @element-side-position;
}
}
Это решениеЭто нормально, но если у вас огромная таблица стилей, вы получите множество дополнительных классов для -ltr и -rtl.Не очень большая боль, но вы могли бы на самом деле сделать его еще более полезным, расширив область действия -ltr / -rtl на родительские контейнеры (например, header / content / sidebar / footer) и затем отрегулировать их оттуда.У них может быть много общего, например, фон, цвета, размер шрифта ... и вы просто поработаете над различиями в их версиях -ltr / -rtl.
Кроме того, ознакомьтесь с LESS Namespaces, они могут предложить вам еще больше организационных полномочий.
Надеюсь, это поможет!