Менее агрессивная компиляция с CSS3 calc

255

Используемые мною компиляторы Less (OrangeBits и dotless 1.3.0.5) агрессивно переводя

body { width: calc(100% - 250px - 1.5em); }

в

body { width: calc(-151.5%); }

Это, очевидно, нежелательно. Мне интересно, есть ли способ сообщить компилятору Less, чтобы по существу игнорировать атрибут во время компиляции. Я просмотрел документацию Less и документацию компиляторов, и я ничего не смог найти.

Поддерживает ли это меньше или меньше компилятор?

Если нет, существует ли расширитель CSS?

  • 9
    Вы уверены, что не хотите, чтобы компилятор был менее агрессивным?
  • 0
    Я также уверен, что компилятор должен быть более агрессивным! (двойное отрицание в предыдущем комментарии смутило меня;)) (так что мой голос также за приятную особенность ниже)
Теги:
less
compilation
css-calc

3 ответа

451
Лучший ответ

сделайте это..

body { width: calc(~"100% - 250px - 1.5em"); }

В less.js 1.4.0 у нас будет опция strictMaths, которая требует, чтобы все меньше вычислений находилось в скобках, поэтому calc будет работать "из коробки". Это вариант, поскольку это серьезное изменение. Ранняя ставка 1.4.0 имела этот вариант по умолчанию. По умолчанию версия выпуска отключена.

  • 0
    Brilliant! Большое вам спасибо, я, должно быть, неправильно истолковал часть «Escape» в документации.
  • 2
    Обратите внимание, что если вы компилируете меньше с перерывом в твиттере, он игнорирует это экранирование . По крайней мере, на момент написания этого комментария.
Показать ещё 12 комментариев
33

Очень распространенная утилита calc берет 100% ширину и добавляет некоторый запас вокруг элемента.

Можно сделать это с помощью

@someMarginVariable = 15px;

margin: @someMarginVariable;
width: calc(~"100% - "@someMarginVariable*2);
width: -moz-calc(~"100% - "@someMarginVariable*2);
width: -webkit-calc(~"100% - "@someMarginVariable*2);
23

Существует несколько вариантов экранирования с таким же результатом:

body { width: ~"calc(100% - 250px - 1.5em)"; }
body { width: calc(~"100% - 250px - 1.5em"); }
body { width: calc(100% ~"-" 250px ~"-" 1.5em); }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню