为什么取消设置最大和最小宽度/高度css属性需要不同的值?

时间:2017-01-13 14:37:05

标签: css css3 specifications

考虑这个CSS:

min-height: none;
max-width: none;
max-width: auto;
min-height: auto;

这会产生以下“无效的属性值”'错误。

enter image description here

为什么这样'取消设置' min-[prop]需要auto值而取消设置max-[prop]需要none值吗?

我对规范中这一决定背后的理由感到好奇。

3 个答案:

答案 0 :(得分:1)

none值仅适用于max-height / max-width。这是因为盒子的高度/宽度没有限制。因此,这些属性的默认值为none

none / min-height上不允许min-width值,因为框不能有负高度/宽度。因此,这些属性的默认值为0

规格参考:

答案 1 :(得分:1)

实际上,最小高度和最小宽度的默认值为0

autonone的含义不同:

对于max- [prop], none是:对盒子的高度/宽度没有限制,它会尽可能长。这不是一个自动的。它确实没有限制,没有限制。

对于min- [prop],auto是:“弹性项目的默认最小大小,为其他布局提供比0更合理的默认值”。 什么是:min(0,x),其中x> = 0,x是最小尺寸“没有溢出的可接受元素”。这是一个自动 matic调整。

答案 2 :(得分:1)

我认为这背后有一些逻辑,因为元素具有最小高度,即使此高度为零。

相反,nonemax-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(除非另有说明)   由未来规范定义。)

Implied Minimum Size of Flex Items