5 ответов:
Sass не может выполнять арифметику для значений, которые не могут быть преобразованы из одной единицы в другую. Sass не может точно знать, насколько широк "100%" с точки зрения пикселей или любой другой единицы. Это то, что знает только браузер.
вы должны использовать
calc()вместо. проверьте совместимость браузера на Могу ли я использовать....foo { height: -webkit-calc(25% - 5px); height: -moz-calc(25% - 5px); height: calc(25% - 5px); }Если ваши значения находятся в переменных, вам может потребоваться использовать интерполяцию, чтобы превратить их в строки (в противном случае Sass просто пытается выполните арифметику):
$a: 25%; $b: 5px; .foo { width: -webkit-calc(#{$a} - #{$b}); width: -moz-calc(#{$a} - #{$b}); width: calc(#{$a} - #{$b}); }
есть
calcфункция как в SCSS [время компиляции], так и в CSS [время выполнения]. Скорее всего, вы ссылаетесь на первое, а не на второе.по понятным причинам смешивая блоки не будут работать время компиляции, но будут во время выполнения.
вы можете заставить его с помощью
unquote, функция SCSS..selector { height: unquote("-webkit-calc(100% - 40px)"); }
Если вы знаете ширину контейнера, вы могли бы сделать так:
#container width: #{200}px #element width: #{(0.25 * 200) - 5}pxЯ знаю, что во многих случаях #контейнер может иметь относительную ширину. Тогда это не сработает.
извините за возрождение старой нити - компас' стрейч с: после псевдо-селектор может удовлетворить вашу цель-например. если вы хотите, чтобы div заполнял ширину слева (50% + 10px) экрана, вы можете использовать (в синтаксисе с отступом SASS):
.example background: red +stretch(0, -10px, 0, 0) &:after +stretch(0, 0, 0, 50%) content: ' ' background: blueThe: после того, как элемент заполняет 50% справа .пример (оставляя 50% доступным для .ширина примера), то .пример растягивается на эту ширину плюс 10px.
Comments