css 计算无效 属性 值

css calc invalid property value

谁能告诉我为什么这个 CSS 计算函数不起作用?当我检查 Chrome 上的元素时,它显示 'Invalid property value'。

width: calc((100vw - 14px * 2) / (270px + 11px * 2));

不能像 px 这样的单位除法,只能 numbers.

正如 Stephen Thomas 所回答的那样,您不能按单位划分。要解决这个问题,只需将数字除以数字,然后通过将结果乘以您感兴趣的单位的 1 个单位来指定测量单位。在您的嵌套场景中,您需要弄清楚您使用的测量单位是在最后,这样你就可以划分数字,然后将结果分配给 px 或 vw 测量单位。

使用 calc() 时,您不能除以像素,您只能除以无单位的数字。此外,您除以的数字必须具有特定单位,如 px、em、vh、vw。

例如,如果您需要设置元素的宽度,您应该使用:

width: (100px / 2); //this equals to 50px

一个重要的注意事项是确保在运算符号 之间放置空格。此 calc() article 提供了有关该功能的进一步详细说明。

对于未来的 google 员工:

DevTools 中无用的 "invalid property value" 消息可能只是意味着您需要在 + - / * 运算符周围添加白色 space。

不正确(无效 属性 值):

width:calc(100vh-60px)  <== no spaces around minus sign

正确:

width:calc(100vh - 60px) <== white space around the minus sign

上面的 OP 问题没有这个问题,但是在谷歌搜索这个错误消息的答案时,这是我找到的第一个资源,所以它应该有一个专门针对这个常见错误的答案。

参考文献:

CSS3 calc() not working in latest chrome

https://www.smashingmagazine.com/2015/12/getting-started-css-calc-techniques/

我刚刚遇到这个错误,因为一个 SCSS 变量被设置为零:

错误:

$card-border-width: 0;

这最终引发了 Chrome 的消息 Invalid 属性 value 作为对 CSS 结果 border-radius: 0 0 calc(0.25rem - 0) calc(0.25rem - 0) 的回答。 =14=]

右:

$card-border-width: 0rem;

(给出 border-radius: 0 0 calc(0.25rem - 0rem) calc(0.25rem - 0rem))

正如@cssyphys 上面提到的,你的减号周围必须有空格。但是,如果您使用的是 ASP.NET MVC 的 bundler/minifier,您会发现它删除了空格,因此您会收到注意到的错误。

如果您使用的是普通 CSS3,则可以在 CSS 中使用以下表达式并且不会缩小:

width: calc((100%) - 50px);

但是,如果您使用的是 LESS(也许还有其他 CSS 预处理器?),预处理器将“优化”您的表达式并撕掉您的内部括号,再次导致 ASP.NET 将搞砸了。要解决这个问题,请使用 LESS 的“不处理”波浪号表达式:

width: calc(~"(100%) - 50px");

我不得不回去更改一堆 calc() 语句,但为了取回我的 ASP.NET 缩小版,这是值得的。