这是IE8中的错误。
从第二个问题开始:“ margin:0 auto”将块居中,但仅当块的宽度设置为小于父对象的宽度时。通常,它们是相同的。因此,以下示例中的文本未居中。
<div > <b >text</b></div>
将b元素的显示样式设置为“阻止”后,其宽度默认为父级宽度。CSS规范 10.3.3正常流程 中的 块级不可替换元素
描述了如何:“如果’width’设置为’auto’,则任何其他’auto’值变为‘0’并且’width’从结果相等。” 那里提到的平等是
‘margin-left’+’border-left-width’+’padding-left’+’width’+’padding-
right’+’border-right-width’+’margin-right’=包含块的宽度
因此,通常所有auto都会导致块宽度等于包含块的宽度。
但是,此计算不应应用于被替换的元素INPUT。替换的元素由 10.3.4正常流程中的块级替换元素
覆盖。那里的文字说:“’宽度’的使用值是根据内联替换元素确定的。” 10.3.2内联替换元素
的相关部分是:“如果’width’的计算值为’auto’,并且该元素具有固有宽度,则该固有宽度就是’width’的使用值”。
我猜想CSS关心的场景是IMG元素。本示例中的Stackoverflow徽标将以所有浏览器为中心。
<div > <img border="0" src="http://stackoverflow.com/content/img/so/logo.png" alt=""></div>
INPUT元素的行为应相同。



