css - 为什么 min() (或 max()) 不能与无单位 0 一起使用?
问题描述
我已经四处寻找答案,但找不到任何有用的信息。我正在尝试将top
CSS 中元素的属性设置为max(0, 120vh - 271px)
. 我已经尝试了几种变体:
top: max(0, 120vh - 271px);
top: max(0, (120vh - 271px));
top: max(0, calc(120vh - 271px));
我的语法有问题吗?我不断收到 Chrome 告诉我这是一个无效的属性错误。
在实践中,我实际上使用 CSS 变量作为数字。所以实际上是 120vhvar(--height)
或类似的东西。当我使用 CSS 变量时,该行不做任何事情。它不应用样式,我也没有收到任何警告。我在这里做错了什么?
我正在使用最新版本的 Chrome(我相信是 83),所以应该支持它。
解决方案
您需要添加一个单位,0
否则浏览器在处理无单位值 (a <number>
) 与单位 (a <length>
) 值之间的比较时会感到困惑,并且top
属性接受 a <length>
not a<number>
top: max(0px, 120vh - 271px)
要理解这一点,您需要遵循规范:
min()
ormax()
函数包含一个或多个以逗号分隔的计算,分别表示它们中的最小(最负)或最大(最正)。
然后进行计算:
一个
calc()
函数包含一个计算,它是一个散布有运算符的值序列,并且可能按括号分组(匹配<calc-sum>
语法),
因此min()
/的内容max()
被视为类型检查calc()
中的then之一
数学函数可以是多种可能的类型,例如
<length>
,<number>
等,具体取决于它包含的计算,如下定义。它可以在任何允许该类型值的地方使用。
和
注意:尽管有一些属性,在使用
<number>
值<length>
时间(特别是行高和制表符大小)时,<number>
s 永远不会变成“类似长度”的calc()
. 他们总是保持原样<number>
。
您可能会感到惊讶,但使用top:0
是有效的,而top:calc(0)
不是。为了使后者有效,它需要是top:calc(0px)
. 相同的逻辑min()
/max()
值得注意的是,这同样适用于,clamp()
因为它等同于max(MIN, min(VAL, MAX))
推荐阅读
- apexcharts - 顶点图表具有不同x轴的多个系列
- qt - tensorflow.js 能否与 QT quick 和 QML 一起使用来构建原生机器学习应用程序?
- amazon-web-services - 有条件的红移运行总数
- c++ - 为什么从 C++ 20 开始,基于范围的 for 循环错误消息仍然不是很好?
- python - 有没有办法在 2d numpy 数组中找到结点像素?
- python-3.x - 如何将字符串从 script_1 发送到 script_2?
- python - 在命名空间中的 Selenium 中找不到 XML 路径 - 厌倦了所有可能性
- salesforce - Salesforce,LWC 闪电输入类型 =“时间”移动视图中的奇怪行为
- django - Django REST 框架中的异步长时间运行函数
- android - 多次触发 TextWatcher 事件