为什么没有margin-top:auto和margin-bottom:auto和left左右对应的一样?

And*_*y F 19 css

如果我像这样设置div的CSS margin属性:

div { margin-left: auto; margin-right: auto; }
Run Code Online (Sandbox Code Playgroud)

我得到一个在页面中水平居中的div,就像这样.

但是,如果我将CSS更改为:

div { margin-top: auto; margin-bottom: auto; }
Run Code Online (Sandbox Code Playgroud)

我的div不是垂直居中的.我不需要知道一个解决方法(有很多 可用的解决方案),但我想知道这种行为的原因.为什么margin-top和margin-bottom的工作方式不一样?我错过了什么?

Jas*_*aro 19

简短的回答是规范说的.

10.6.2内联替换元素,正常流中的块级替换元素,正常流中的"内联块"替换元素和浮动替换元素

如果'margin-top'或'margin-bottom'为'auto',则其使用值为0.

http://www.w3.org/TR/CSS2/visudet.html#Computing_heights_and_margins

  • @sam:对于任何一方的`padding:auto`,使用的值总是*为零. (2认同)