css – 为什么没有margin-top:auto和margin-bottom:自动工作与左右对应的一样?

如果我设置一个div的CSS边距属性,就像这样:

div { margin-left: auto; margin-right: auto; }

我得到一个水平位于页面like so的div。

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

div { margin-top: auto; margin-bottom: auto; }

我的div不是垂直居中的。我不需要知道解决方法(plenty of solutions are available),但我想知道这个行为的原因。为什么边际上线和边缘底线的工作方式不一样?我失踪了什么

简单的答案是规范说的。

10.6.2 Inline replaced elements, block-level replaced elements in normal flow, ‘inline-block’ replaced elements in normal flow and floating replaced elements

If ‘margin-top’, or ‘margin-bottom’ are ‘auto’, their used value is 0.

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

http://stackoverflow.com/questions/6775273/why-dont-margin-top-auto-and-margin-bottomauto-work-the-same-as-their-left-an

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:css – 为什么没有margin-top:auto和margin-bottom:自动工作与左右对应的一样?