Mar 2

多余的空白问题 不指定

admin , 23:47 , 默认分类 , 评论(0) , 引用(0) , 阅读(1304) , Via 本站原创 | |
  

    测试页面兼容时,经常会遇到多余空白问题:IE6/IE7中li底部3px的Bugimg在IE6和IE7中导致父层DIV高度多了4px

  

    无论是IE6/IE7,还是IE8/FF/Opera/Chrome都存在这样的问题,只不过是产生的原因各不相同:IE6/IE7中的空隙是因为img前后的空格、换行、回车、缩进产生的;IE8/FF/Chrome/Opera则是line-height和font-size导致的。下面分别列举最常见的情况:

  

    1、li-img

  
    <ul class="list-img">
    <li><img src="garden01.jpg" /></li>
    <li><img src="garden01.jpg" /></li>
    <li><img src="garden01.jpg" /></li>
    </ul>
  
        
  •       li 的子元素包含图片元素(img),会导致li底部多余6px-7px的空隙
  •     
  •       用vertical-align:top|middle|bottom都可以消除li底部多余的6px-7px空隙。兼容各个主流浏览器
  •     
  •       IE6/IE7以外的其它浏览器,还可以给img设置display:block来消除的多余6px-7px空隙,或者设置float:left|right来隐式将img设置成块状元素block
  •   
  

     

  

    2、li-inline

  
    <ul class="list-inline">
    <li><span>http://www.dovapour.com.cn/</span></li>
    <li><span>http://www.baidu.com/</span></li>
    <li><span>http://www.taobao.com/</span></li>
    </ul>
  

    li 的儿子元素是内联元素(inline),会导致li底部出现空隙。

  

    解决办法1:将内联元素(inline)设置成display:inline-block。兼容各个浏览器。

  

    解决办法2:将内联元素(inline)设置成display:block。另外再用zoom:1触发layout来兼容IE6。

  

     

  

    3、li-block

  
    <ul class="list-float">
    <li><div>http://www.dovapour.com.cn/</div></li>
    <li><div>http://www.baidu.com/</div></li>
    <li><div>http://www.taobao.com/</div></li>
    </ul>
    <style type="text/css">
    .list-float li{
    width:300px;
    
}
    .list-float div{
    clear:left;
    float:left;
    background:#CCC;
    
}
    
</style>
  

    当li设置了width,并且li的儿子元素设置了float:left|right和clear:both|left|right,会导致li底部出现3px-4px空隙。

  

    解决办法:给li的儿子元素设置vertical-align:top|middle|bottom。

  

     

  

    4、float-img

  
    <div class="float-img">
    <ul>
    <li><img src="garden01.jpg"></li>
    <li><img src="garden01.jpg"></li>
    <li><img src="garden01.jpg"></li>
    <li><img src="garden01.jpg"></li>
    <li><img src="garden01.jpg"></li>
    <li><img src="garden01.jpg"></li>
    <li><img src="garden01.jpg"></li>
    </ul>
    </div>
    <style type="text/css">
    .float-img{
    width:600px;
    background:#F1F1F1;
    
}
    .float-img ul{
    padding:10px;
    zoom:1;
    
}
    .float-img li{
    float:left;
    background:red;
    
}
    .float-img img{
    border:2px solid orange;
    vertical-align:middle;
    
}
    
</style>
  

    给li设置float:left|right,ul设置padding-top:10px;会导致IE6/IE7中每个li都增加了10px的垂直空隙。

  

    解决方法:通过设置width、height、zoom等方法触发ul 的layout。

  

    另外:将上面的ul和li 都替换成div也存在这个问题,看来这个bug不是li 独有的。

  

     

  

    总结:多余空白问题都可以通过设置vertical-align:top|middle|bottom来解决。第4种情况有点特殊需要触发layout

  null
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]