首页  ·  知识 ·  前端
UL在IE6、IE7中下边距bug的CSS
不详      编辑:德仔   图片来源:网络
无序列表ul是XHTML重要的标签之一,页面中很多内容都是以无序列表ul的形式出现的,在52CSS以前的文章中,介绍过很多应用无序列表ul实现

无序列表ul是XHTML重要的标签之一,页面中很多内容都是以无序列表ul的形式出现的,在52CSS以前的文章中,介绍过很多应用无序列表ul实现的DIVCSS网页布局中的元素。

无序列表ul在IE6、IE7中下边距出现问题的bug,或许您在进行CSS布局开发时已经遇到了这样的苦恼。

在大多数时候,无序列表内的列表项li都是固定的。比如,有六个,八个,十个。因而我们可以轻松的定义ul的宽度和高度。而在一些交互性很强的网站中,无序列表ul内的列表项li是不固定个数的。因而我们不能定义ul的高度,需要让它自适应li的个数,随着功能与内容的需要,随时动态的调整它的大小。在这样的情况下,本实例所要讲述的bug就要出现了。

看下面的图片:
 



这是一个由六个列表项li组成的无序列表,而li的数量可能有所增加或减少,因而我们不能定义ul的高度,按照正常的思路,我们定义ul的上侧与左侧的内边距,再定义li右侧与下侧的外边距,实现等边距的效果。思路如下图所示。
 


我们开始着手编码。HTML代码如下:


       
  • http://52css.com/attachments/month_0810/879/1.jpg" />

  •    
  • http://52css.com/attachments/month_0810/879/2.jpg" />

  •    
  • http://52css.com/attachments/month_0810/879/3.jpg" />

  •    
  • http://52css.com/attachments/month_0810/879/4.jpg" />

  •    
  • http://52css.com/attachments/month_0810/879/5.jpg" />


*{
    padding:0;
    margin:0;
    list-style:none;
}
ul {
    width:390px;
    margin:20px auto;
    padding:10px 0 0 10px;
    border:1px solid #ccc;
    overflow:hidden;}
li {
    float:left;
    width:120px;
    height:150px;
    margin:0 10px 10px 0;
    overflow:hidden;
}

我们在IE6、IE7和FF中浏览页面效果。发现在IE7中,ul底部的间隔消失了,也就是li的下外边距定义没有起到作用。如下图如示。


 

 




这是一个IE7的bug,我们通过CSS HACK来修复它,应用“*+html”作为选择器,针对IE7,设置UL的下内边距。代码如下。


css.com]
*+html ul {
    padding-bottom:10px;
}


经过设置后,发现在IE6、IE7和FF中浏览均没有再出现问题。
  
然后我们的列表项li是不固定的,我们去掉一个列表项li再浏览页面。发现在IE6下,ul底部的间隔又一次消失了,也就是li的下外边距定义没有起到作用。如下图如示。

我们不得不进行修复,针对IE6进行CSS HACK编码。应用“*html”作为选择器,针对IE6,设置UL的下内边距。代码如下。
*html ul {
    padding-bottom:10px;
}


再次运行后,发现在IE6、IE7和FF中浏览均没有再出现问题。

这也太不可思议了。怎么会频繁的出现如此多的问题。我们不得不考虑新的出路了。其实我们只要换一个角度去思考,这两个bug均可以成功的避免。


也就是,我们设置ul的左侧和下则外边距,设置li的上侧和右侧外边距来实现间隔。如下图所示。

这样设置以后,无论在IE6、IE7和FF中,运行均没有问题。
 

本文作者:不详 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读