Ответ 1
Вы можете избежать аргументов calc
, чтобы предотвратить их оценку при компиляции.
Используя ваш пример, вы просто окружаете аргументы, например:
calc(~'100% - 10px')
Демо: http://jsfiddle.net/c5aq20b6/
Я нахожу, что использую это одним из следующих трех способов:
Основное экранирование
Все внутри аргументов calc
определяется как строка и полностью статично, пока не будет оценено клиентом:
LESS Input
div {
> span {
width:calc(~'100% - 10px');
}
}
Выход CSS
div > span {
width: calc(100% - 10px);
}
Интерполяция переменных
Вы можете вставить в строку LESS переменную:
LESS Input
div {
> span {
@pad: 10px;
width:calc(~'100% - @{pad}');
}
}
Выход CSS
div > span {
width: calc(100% - 10px);
}
Смешение экранированных и скомпилированных значений
Вы можете избежать процентного значения, но идите и оцените что-то в компиляции:
LESS Input
@btnWidth: 40px;
div {
> span {
@pad: 10px;
width:calc(~'(100% - @{pad})' - (@btnWidth * 2));
}
}
Выход CSS
div > span {
width: calc((100% - 10px) - 80px);
}
Источник: http://lesscss.org/functions/#string-functions-escape.