我四处寻找答案,但找不到任何有用的信息。我正在尝试将topCSS 中元素的属性设置为max(0, 120vh - 271px). 我已经尝试了几种变体:
top: max(0, 120vh - 271px);top: max(0, (120vh - 271px));top: max(0, calc(120vh - 271px));我的语法有问题吗?我一直让 Chrome 告诉我这是一个无效的属性错误。
在实践中,我实际上使用 CSS 变量来表示数字。所以120vh实际上是var(--height)或类似的东西。当我使用 CSS 变量时,该行没有做任何事情。它不应用样式,我没有收到任何警告。我在这里做错了什么?
我正在使用最新版本的 Chrome(我相信是 83),所以应该支持它。
您需要添加一个单位,0否则浏览器会混淆处理无单位值和带单位值之间的比较:
top: max(0px, 120vh - 271px)
Run Code Online (Sandbox Code Playgroud)
要理解这一点,您需要遵循规范:
的
min()或max()功能包含一个或多个以逗号分隔的计算,并表示它们中的最小(最负)或最大(最正的),分别。
然后进行计算:
calc() 函数包含单个计算,它是一个散布运算符的值序列,并可能按括号分组(匹配
<calc-sum>语法),
所以基本上所有的规则都calc()适用于min()/max()并且0是无效的
注意:因为
<number-token>s 总是被解释为<number>s 或<integer>s,<length>所以在calc(). 也就是说,width:calc(0 + 5px);是无效的,即使 width: 0; 和宽度:5px;是有效的。参考
相关:为什么在方程中使用 0 时 css-calc() 不起作用?
您可能会感到惊讶,但使用top:0有效而top:calc(0)无效。为了使后者有效,它需要是top:calc(0px). 相同的逻辑min()/max()
值得注意的是,这同样适用于,clamp()因为它等价于max(MIN, min(VAL, MAX))