CSS calc() - 使用单位值进行乘法和除法

sam*_*ime 27 css css3 css-calc

是否可以使用calc()乘以或除以基于单位的值(如100%,5px等).

例如,我希望做这样的事情:

width: calc(100% * (.7 - 120px / 100%));
Run Code Online (Sandbox Code Playgroud)

希望它解决类似的问题(假设100%= 500px):

width: calc(500px * (.7 - 120px / 500px));
width: calc(500px * (.7 - .24));
width: calc(500px * .46);
width: calc(230px);
Run Code Online (Sandbox Code Playgroud)

然而,在经过一些实验之后,看起来我不能将基于单位的价值作为分裂的分母.

我也似乎并不能够多两个值在一起像5px * 10px5px * 100%.

我知道在100%的情况下允许这样做没有意义,但在我的用例中,我想知道120px的总宽度是多少百分比,然后我将其输入到我的其余部分.计算.

要么就是这样,或者如果有人能想出一种不同的方式来编写它,那么它也会起作用.我绞尽脑汁,无法想出任何东西.

And*_*rie 44

在CSS calc()除法中 - 右侧必须是一个<number>因此基于单位的值不能像这样在除法中使用.

另请注意,在乘法中,至少有一个参数必须是数字.

MDN对这个伟大的文档.

如果您想要更好的计算方法,可以使用预处理器(我喜欢Sass).该链接将带您到他们的指南(在该页面上有一个关于运营商的部分).

  • 预处理器无法像calc()那样处理,因为这样的计算需要在渲染时完成,这使得像Sass这样的东西变得毫无用处. (4认同)
  • 如果 CSS 的 calc() 函数被限制到如此“天文数字”的程度,为什么在 CSS 中没有办法将变量转换为数字?据我所知,鉴于 SASS 是一个预处理器,因此无法将 CSS 变量放入其中。 (2认同)

Awa*_*sir 7

对于像我这样犯错的人,别忘了在 CSS 的函数中不能直接使用Sass 变量calc。为此,您必须使用 Sass 的计算方法。

$test: 10px;

.testing{
    width: $test * 2;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果需要calc实现:

$test: 10px;

.testing{
  width: calc(50% + #{$test * 2}); // results in calc(50% - 20px)
}
Run Code Online (Sandbox Code Playgroud)