Css Sass负变量值?

Css Sass负变量值?,css,sass,compass-sass,Css,Sass,Compass Sass,我有两个scss选择器,使用相同数量的正片和负片,如: padding: 0 15px 15px; margin: 0 -15px 20px -15px; 我更愿意为所有15px量使用一个变量,但这不起作用: $pad: 15px; padding: 0 $pad $pad; margin: 0 -$pad 20px -$pad; 保证金金额转换为正数。我错过什么了吗?像这样试试看 margin: 0 (-$pad) 20px (-$pad); $gutter: 30px; .heade

我有两个scss选择器,使用相同数量的正片和负片,如:

padding: 0 15px 15px;
margin: 0 -15px 20px -15px;
我更愿意为所有15px量使用一个变量,但这不起作用:

$pad: 15px;
padding: 0 $pad $pad;
margin: 0 -$pad 20px -$pad;
保证金金额转换为正数。我错过什么了吗?

像这样试试看

margin: 0 (-$pad) 20px (-$pad);
$gutter: 30px;

.header {
  margin: $gutter neg($gutter);
}

根据sass指南,一个更明智的解决方案是
插入
变量,如以下示例所示:

margin: 0 -#{$pad} 20px -#{$pad};

举个例子:

在考虑了前面的两个答案后,我加上了我的两个便士,然后读到这个(强调我的):

您应该特别避免使用像
{$number}px这样的插值。
这实际上并没有创建一个数字!它创建一个不带引号的字符串
这看起来像一个数字,但不适用于任何数字或操作
功能。试着把你的数学单元弄干净,这样
$number
就可以了 具有装置
px
,或写入
$number*1px

因此,我认为正确的方法如下,它保留了SASS/SCSS的数学能力:

$pad: 15px;
padding: 0 $pad $pad;
margin: 0 $pad*-1 20px $pad*-1;
创建一个函数

@function neg($val) {
  @return $val * -1
};
然后我就这样用

margin: 0 (-$pad) 20px (-$pad);
$gutter: 30px;

.header {
  margin: $gutter neg($gutter);
}

自动尝试此方法-在calc函数中使用时似乎不起作用。编辑:在使用calc时,似乎不需要使用括号,但需要插入@Green。您可以随时查看示例链接:乍一看,这似乎是吹毛求疵(您的答案),但乍一看,这确实是更好的答案。毕竟,如果变量变为负变量,答案就变为正$焊盘:-2rem。。。边距:0-#{$pad};//变为边距:0-2rem;保证金:0$pad*-1;//成为边距:0 2rem;