考虑这个CSS:
min-height: none;
max-width: none;
max-width: auto;
min-height: auto;
这会产生以下“无效的属性值”'错误。
为什么这样'取消设置' min-[prop]
需要auto
值而取消设置max-[prop]
需要none
值吗?
我对规范中这一决定背后的理由感到好奇。
答案 0 :(得分:1)
none
值仅适用于max-height
/ max-width
。这是因为盒子的高度/宽度没有限制。因此,这些属性的默认值为none
。
none
/ min-height
上不允许min-width
值,因为框不能有负高度/宽度。因此,这些属性的默认值为0
。
规格参考:
答案 1 :(得分:1)
实际上,最小高度和最小宽度的默认值为0
。
auto
和none
的含义不同:
对于max- [prop],
none
是:对盒子的高度/宽度没有限制,它会尽可能长。这不是一个自动的。它确实没有限制,没有限制。
对于min- [prop],auto
是:“弹性项目的默认最小大小,为其他布局提供比0更合理的默认值”。
什么是:min(0,x),其中x> = 0,x是最小尺寸“没有溢出的可接受元素”。这是一个自动 matic调整。
答案 2 :(得分:1)
我认为这背后有一些逻辑,因为元素具有最小高度,即使此高度为零。
相反,none
对max-height
的使用是合乎逻辑的,理论上存在无限量的值,因为元素可以根据需要使用尽可能多的高度。
用规范的话说:
<强>无强>
(仅限'max-height')盒子的高度没有限制。
Minimum and maximum heights: 'min-height' and 'max-height'
盒子的最大高度没有限制,它可以达到它想要的大小,但是盒子的最小高度是有限的,因为它只能降到零(负高度值无效) )。
在CSS 2.1中,min-height
的初始值为0
,flexbox模块引入了auto
作为初始值。 auto
工作的原因是它计算0
(如果未使用flexbox模型)有效地取消设置值:
自动
在主轴上可见溢出的弹性项目上,何时 在flex项的主轴min-size属性上指定,指定一个 自动最小尺寸。 否则计算为0(除非另有说明) 由未来规范定义。)