CSS中心会产生不同的结果

时间:2011-01-04 19:49:26

标签: css webkit center

考虑使用此代码将div相对于其父元素居中:

div {
width:200px;
position:absolute;
left:50%;
margin-left:-110px;
padding:10px;
display:table;
}

我们正在使用(宽度/ 2) - 填充,对吧?

为什么所有基于Webkit的浏览器(Safari和Chrome)都将这个div 10px集中在左边?这个10px是填充。

所以我们在这里有两个方面:

  1. Chrome + Safari - >填充不得包含以正确居中
  2. Firefox,IE,Opera - >填充必须 包含才能正确居中
  3. 现在我的问题是,两者中哪一个实际上做得对?

    编辑:

    Apperantly;只有在添加display:table时才会出现此问题;到了div。举个例子:http://jsfiddle.net/rhKW7/1/ link text

3 个答案:

答案 0 :(得分:1)

你做错了。你应该使用

margin: 0 auto;

这会将元素置于其父级中心。

答案 1 :(得分:1)

根据您的实现,您可以包含需要以100%宽度和绝对定位的div居中的元素,然后使用当前元素使用边距:0 auto将其置于绝对定位的中心元件。

答案 2 :(得分:1)

我无法重新创建您的问题。您的代码适用于各种浏览器。

现场演示: http://jsfiddle.net/SXzbF/1/

编辑 我弄清楚了问题所在:

在Chrome中(至少),如果设置display:table,那么结果就不会使用该元素的填充。我想,那是因为,对于TABLE元素,填充只设置为TD元素(对于单元格),而不是TABLE元素。我不确定在TABLE上设置填充是否有效,但我建议你不要这样做,而是在单元格上设置填充。