Переменная Sass в функции CSS calc ()

630

Я пытаюсь использовать функцию calc() в таблице стилей Sass, но у меня возникают некоторые проблемы. Здесь мой код:

$body_padding: 50px

body
    padding-top: $body_padding
    height: calc(100% - $body_padding)

Если я использую буквальный 50px вместо моей переменной body_padding, я получаю именно то, что хочу. Однако, когда я переключаюсь на переменную, это вывод:

body {
    padding-top: 50px;
    height: calc(100% - $body_padding); }

Как я могу заставить Sass признать, что ему нужно заменить переменную в функции calc?

  • 9
    возможный дубликат переменной США в миксине
  • 14
    @ user3705055 Вам нужно рассчитать, так как Sass не может рассчитать 100% - 50px, поскольку единицы измерения разные. Это может быть вычислено только браузером, когда он знает, насколько велик контейнер, чтобы преобразовать 100% в px перед добавлением значений. Это точная причина, почему существует Calc.
Теги:
sass
css-calc

3 ответа

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

Интерполяция:

body
    height: calc(100% - #{$body_padding})

Для этого случая также будет border-box:

body
    box-sizing: border-box
    height: 100%
    padding-top: $body_padding
  • 47
    Проблема Sass, для справки: github.com/nex3/sass/issues/818
  • 1
    box-sizing: border-box; было бы идеальным способом пойти, на мой взгляд, конечно. В общем, модель размеров коробки должна составлять
-5

Попробуйте следующее:

$body_padding: 50px

body
    padding-top: $body_padding
    height: #{100vh - $body_padding}

100vh, сделайте элемент полной высотой окна просмотра

-5

Попробуйте следующее:

@mixin heightBox($body_padding){
   height: calc(100% - $body_padding);
}

body{
   @include heightBox(100% - 25%);
   box-sizing: border-box
   padding:10px;
}
  • 2
    Как это лучше, чем принятый ответ выше? Кажется, он даже не делает то же самое ...?

Ещё вопросы

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