这是一个让我烦恼的快速问题:为什么要以
为中心margin:0 auto
可以正常使用
display:block
但是当显示设置为
时,不会将div居中display:inline-block
感谢您的回答
答案 0 :(得分:4)
我的理解如下(虽然我很乐意予以纠正)。
答案 1 :(得分:4)
请参阅http://www.w3.org/TR/CSS2/visudet.html#Computing_widths_and_margins
块:
10.3.3正常流程中的块级非替换元素
以下约束必须包含在另一个的使用值中 属性:
'margin-left'+'border-left-width'+'padding-left'+'width'+ 'padding-right'+'border-right-width'+'margin-right'=宽度 包含块
如果'width'不是'auto'和'border-left-width'+'padding-left'+ 'width'+'padding-right'+'border-right-width'(加上任何一个 'margin-left'或'margin-right'不是'auto')大于 包含块的宽度,然后是任何“自动”值 对于以下规则,“margin-left”或“margin-right”将被处理 为零。
如果以上所有都具有“auto”以外的计算值,则 值被称为“过度约束”和使用的值之一 必须与其计算值不同。如果'方向' 包含块的属性具有值'ltr',指定的值 忽略'margin-right'的值,并计算该值 使平等成真。如果'direction'的值是'rtl',那么这个 恰好是'margin-left'。
如果只有一个值指定为'auto',则使用其值 从平等出发。
如果'width'设置为'auto',则任何其他'auto'值变为'0'和 'width'来自最终的平等。
如果'margin-left'和'margin-right'都是'auto',则使用它们的值 是平等的。这使元素相对于中心水平居中 包含块的边缘。
内嵌块:
10.3.9'内联块',正常流程中未替换的元素
如果'width'是'auto',则使用的值是收缩到适合的宽度 浮动元素。
'margin-left'或'margin-right'的'auto'计算值变为 使用的值为'0'。
答案 2 :(得分:0)
我意识到我回答这个问题有点迟了,但如果你想通过在body中指定text align来将margin auto与inline-block结合起来,你可以解决这个问题...
body {
text-align: center;
}
答案 3 :(得分:-1)
inline-block
元素不尊重右边距或左边距,因此无法应用设置auto
。
block
元素尊重所有边距。
答案 4 :(得分:-1)
您需要了解inline boxes(不是阻止)以了解正在发生的事情。内联框包含内联项,例如文本和图像。内联块保持其在内联框内的位置,但在其框内的位置内充当块元素。就像文本中的单词不能有自己的宽度一样,内联块也不能。