Поскольку calc
не является обычным значением, вы не можете просто добавить к нему знак -
для получения отрицательного значения.
Идея состоит в том, чтобы рассмотреть другой параметр для управления знаком.Вот идея использования чистого CSS и CSS-переменной без необходимости другого calc()
.box {
margin-top: calc( var(--s,1)*(40px + 1rem));
height:100px;
background:rgba(255,0,0,0.5);
}
<div class="box"></div>
<div class="box" style="--s:-1"></div>
Вы можете определить отрицательное значение, используя класс
.box {
margin-top: calc( var(--s,1)*(40px + 1rem));
height:100px;
background:rgba(255,0,0,0.5);
}
.neg {
--s:-1;
}
<div class="box"></div>
<div class="box neg"></div>
ОБНОВЛЕНИЕ
Вы также можете рассмотреть выражение с использованием переменных:
:root {
--exp:(40px + 1rem);
}
.box {
margin-top: calc( var(--s,1)*var(--exp));
height:100px;
background:rgba(255,0,0,0.5);
}
<div class="box"></div>
<div class="box" style="--s:-1"></div>