反转 CSS 变量的像素值

Pri*_*Nom 4 css css-variables

我使用 CSS 变量,这样我就可以轻松地进行彻底的更改。我的变量之一是--gap: 15px,到目前为止我已经使用了大约 15 次。但是,我现在需要使用 的反转值--gap,即-15px

失败:

  1. calc(0 - var(--gap))
  2. calc(var(--gap) * -1)

作品:

  1. calc(var(--gap) - calc(var(--gap) * 2))

问题:

  • 第一次尝试显然是最有说服力的,但为什么不起作用呢?

  • 有没有比第三种方法更雄辩的方法来实现这一目标?

And*_*man 5

0如果我在计算部分添加单位,您的第一个失败示例对我有用。

\n\n

规格来看

\n\n
\n

注意:由于 <number-token> 始终被解释为数字或\n <integer>,因此 calc() 中\xe2\x80\x99t 支持“无单位 0”<length>。即\n,width: calc(0 + 5px); 无效,即使 width: 0; 和\n宽度:5px;是有效的。

\n
\n\n

\r\n
\r\n
:root {\r\n  --gap: 15px;\r\n}\r\n\r\ndiv {\r\n  margin-top: calc(0px - var(--gap));\r\n}
Run Code Online (Sandbox Code Playgroud)\r\n
<div>text</div>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

你的第二个失败例子对我有用。

\n\n

\r\n
\r\n
:root {\r\n  --gap: 15px;\r\n}\r\n\r\ndiv {\r\n  margin-top: calc(var(--gap) * -1);\r\n}
Run Code Online (Sandbox Code Playgroud)\r\n
<div>text</div>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

我在 Firefox 64、Chrome 71 和 Safari 12(所有 Mac)中测试了这两个示例。

\n