新建一个简单的HTML测试文件,下面来测试ul li标签

引用
<ul>
<li><a href="#">菜单一</a></li>
<li><a href="#">菜单一</a></li>
<li><a href="#">菜单一</a></li>
<li><a href="#">菜单一</a></li>
<li><a href="#">菜单一</a></li>
<li><a href="#">菜单一</a></li>
</ul>

测试一,定义css为如下代码,效果如下

引用
body{font-size:12px;margin:0}
ul{list-style:none;margin:0;padding:0;width:120px;}
ul li{background:green;height:20px;}
ul li a{color:#fff;padding:0 0 0 10px;}

发现在IE5和IE5.5下左边都产生了空白,并且在IE5下,LI之间的行距产生空白,如下图
uploads/200704/13_011917_snap3.gif

测试二,定义css为如下代码,

引用
body{font-size:12px;margin:0}
ul{list-style:none;margin:0;padding:0;}
ul li{background:green;height:20px;width:120px;}
ul li a{color:#fff;padding:0 0 0 10px;}

和测试一相比,只是将width:120px;从ul的定义放置到li的定义,解决了IE5和IE5.5左边产生空白的问题,而IE5的li之间的间距还是有,如下图
uploads/200704/13_012050_snap2.gif

测试三,定义css为如下代码,(最佳写法)

引用
body{font-size:12px;margin:0}
ul{list-style:none;margin:0;padding:0;}
ul li{background:green;height:20px;width:120px;vertical-align: bottom;}
ul li a{color:#fff;padding:0 0 0 10px;}

和测试二比较,在li的定义中加上vertical-align: bottom;ie5下正常,li之间的空白行距消失了,取得各个浏览器的效果一样,如下图
uploads/200704/13_012538_snap1.gif

总结
1.解决li在IE5下产生空白行距的方法:如果li定义了宽度,那么需要在li里面再定义vertical-align: bottom;
2.宽度最好不要定义在UL,定义在LI或者UL外层的DIV里面
3. 书写LI的最佳方式,li里面要书写高度和宽度,以及vertical-align: bottom;(for ie5/win bug),或者在ul外面加上一层div,并定义宽度,那么在li里面不用定义宽度和vertical-align: bottom;,也显示正常(IE5下不会产生空白行距),不过高度还是要定义一下的。


15条评论

  1. 不错,顶

  2. 非常有用,谢谢!

  3. 好文章啊,收藏了

  4. 真有耐心,但是花这么多心力在兼容性上,不值得,我认为。

    照顾好IE6/IE7/FF就已经很不错了,也比较容易,通过有针对性的设计,合理的避开问题最多的float定位,活用相对与绝对定位,这几种浏览器的兼容性工作其实很小。

    问题最大的IE5X如果不是特殊情况,比如老旧的政府内网业务系统中,真的没必要去考虑。

  5. 前天在群里聊天,realazy说:比Web标准重要的事情还有很多很多。

    借过来说:在Web标准中,比兼容IE5.X重要的事情还有很多很多。

  6. 前天在群里聊天,realazy说:比Web标准重要的事情还有很多很多。

    借过来说:在Web标准中,比兼容IE5.X重要的事情还有很多很多。

  7. 刚看到好久不发文的dodo写了一篇,就看见爆牙齿兄泼冷水了。两位大侠,我是没有研究的如此之深,不过一年前也遇到这样的情况,虽然已搞定,还是谢谢解决方法,呵呵。

  8. 关于兼容性的经验来自哪里?

    都是来自这些有耐心的大侠,正因为这些人。我们才得意更高效率的解决问题。

  9. 真没必要去兼容那么多浏览器

    IE6 IE7 firefox就够了 在去搞其他的会把人给搞死了。

  10. 呵呵,楼上说话有意思。。。要照顾IE5真是把人弄晕了的。

  11. 为什么

    <ul><li>图</li><li>图</li><li>图</li><li>图</li></ul>



    <ul>

    <li>图</li>

    <li>图</li>

    <li>图</li>

    <li>图</li>

    </ul>

    这2种书写方式在IE6里都有区别

    前者正确,后者必须设置LI字体为教小的数才正常,

    我杂有点不理解

  12. <div>

    评论<br>

    <textarea name="PostComment.ascx:tbComment" rows="10" cols="50" id="PostComment.ascx_tbComment" style="height:193px;width:400px;"></textarea>

    </div>

    这个你这个评论表单的代码,为什么在FF 里输入字符不换行呢,

    textarea 这个东西愁死我了,我查了好多资料,都解决不了,希望能帮忙解决下,你就回到下边。我经常光临你的BLOG

  13. 我还用IE4显示完全不正常,帮忙解决下!

  14. 谢谢分享··· 不介意转载吧?! 呵呵··收藏一下啊

  15. 很棒!!

    不过我也觉得对于IE5.x的没啥必要考虑了!

发表评论

评论也有版权!