§ ITPOW >> 文档 >> CSS

ul 浮动之后 margin-left 变大的问题(不是双倍 margin 问题)

作者:vkvi 来源:ITPOW(原创) 日期:2010-4-8

HTML 文件

<ul>
  <li>1</li>
  <li>2</li>
</ul>

CSS 文件

ul
{
    float:left;
    display:inline;
    margin:0px 0px 0px 30px;
    padding:0px 0px 0px 20px;
}

CSS 中各句的用途:

  • float:left 让 ul 浮动起来,虽然本示例中看起来没有什么意思,但实际中会遇到让 ul 浮动的情况。
  • display:inline 是为了解决 IE 的一个双倍 margin-left 的 BUG,具体请参见 IE 浮动边界 BUG 延伸探讨
  • margin、padding 这个是为了让 li 前面的引导小黑点显示出来,也为了各浏览器中的兼容性,你可以去掉看看效果。

现在问题来了

郁闷的是,IE 6 中 ul 的左边距远远大于指定的 30px,而其他浏览器中则正常。下图是 IE 6 与其他浏览器中的显示差别。

ul 浮动之后 margin-left 变大的问题(不是双倍 margin 问题)

左边是 IE 6 中显示的,右边是 Chrome 等浏览器中显示的。

如何纠正 IE 6 的问题呢?

解决方法是为 ul 或 li 设置 list-style-position:outside。很奇怪吧,list-style-position 的默认值本来就是 outside,不知道为什么这种情况下 IE 6 非要我们自己去设置一下。

ul
{
    float:left;
    display:inline;
    margin:0px 0px 0px 30px;
    padding:0px 0px 0px 20px;
}
li
{
    list-style-position:outside;
}

相关阅读

相关文章