有人能告诉我为什么这个CSS计算函数不起作用吗?在Chrome中检查元素时,它显示“无效的属性值”。
width: calc((100vw - 14px * 2) / (270px + 11px * 2));
给未来的Google搜索者:
在DevTools中显示的“无效属性值”信息可能只意味着您需要在加号、减号、除号或乘号周围添加空格。
不正确的写法(无效属性值):
width:calc(100vh-60px) <== no spaces around minus sign
正确:
width:calc(100vh - 60px) <== white space around the minus sign
楼上提出的问题并没有这个问题,但是在搜索答案的过程中,我找到了一个解决此常见错误的资源,应该专门回答一下。
参考资料:
CSS3 calc() not working in latest chrome
https://www.smashingmagazine.com/2015/12/getting-started-css-calc-techniques/
你无法使用像 px
这样的单位进行除法运算,只能使用数字。
width: (100px / 2); //this equals to 50px
如@cssyphys所述,您必须在减号周围添加空格。但是,如果您正在使用ASP.NET MVC的包装器/压缩器,您会发现它会删除空格,因此会出现上述错误。
如果您正在使用普通的CSS3,则可以在CSS中使用以下表达式,不会被压缩:
width: calc((100%) - 50px);
然而,如果你正在使用LESS(和可能其他的CSS预处理器),预处理器将“优化”你的表达式并删除内部括号,结果可能会导致ASP.NET无法正常工作。要解决这个问题,可以使用LESS的“不处理”波浪线表达式:
width: calc(~"(100%) - 50px");
我不得不返回并更改一大堆calc()语句,但为了恢复我的ASP.NET压缩,这是值得的。
正如Stephen Thomas所回答的那样,你不能按单位除以数值。为了解决这个问题,只需将数字作为数字进行除法运算,然后通过乘以你感兴趣的单位的1个单位来确定测量单位。在您的嵌套场景中,您需要弄清楚最终需要的测量单位,以便您可以将数字相除,然后将结果分配给px或vw测量单位。
我刚刚遇到了这个错误,因为一个 SCSS 变量被设置为零:
错误的写法:
$card-border-width: 0;
这最终引发了Chrome的消息无效的属性值,以回答CSS结果border-radius: 0 0 calc(0.25rem - 0) calc(0.25rem - 0)
。
正确:
$card-border-width: 0rem;
(设置 border-radius: 0 0 calc(0.25rem - 0rem) calc(0.25rem - 0rem)
)
width: calc((5) / (2));
。 - SeinopSys