CSS变量 - 如何在calc()中将减号符号与CSS变量连接起来

时间:2018-02-06 09:43:55

标签: css sass css-variables css-calc

嗨,那么让我首先向您展示如何在SCSS中执行此操作:

$submenu-padding-left: 1.5em;

transform: translateX(calc(-#{$submenu-padding-left} + .5em));

将编译为:

transform: translateX(calc(-1.5em - .5em))

基本上,SCSS允许我将减号-与变量连接起来,以便将其转换为负值。

是否可以使用CSS变量实现这一目标?

2 个答案:

答案 0 :(得分:5)

是的,你可以做到。只需乘以-1

:root {
  --margin-l: 50px;
}

body {
  padding: 0 100px;
  border:1px solid;
}

.box-1 {
  background: red;
  height: 100px;
  width: 200px;
  margin-left: calc(-1 * var(--margin-l));
}

.box-2 {
  background: green;
  height: 100px;
  width: 200px;
  margin-left: calc(-1 * calc(-1 * var(--margin-l))); /* You can also nest */
}
<div class="box-1">
</div>
<div class="box-2">
</div>

答案 1 :(得分:1)

如果多次需要负值,则可以定义一个新变量:

:root {
  --margin: 50px;
  --margin--: calc(var(--margin) * -1));
 /* 
 while you may simply write like below
 but I love to use as above 
 coz, we'll only need to change value 
 in one place if needed
 */
 /* --margin--: -50px; */
}

.positive-margin {
  margin: var(--margin);
}
.negative-margin {
  margin-left: var(--margin--);
}

您可以使用--margin---negative-margin代替--margin--。但是出于可读性考虑,我更喜欢这样做。