坑爹IE浏览器兼容性问题-实践性总结

前言

最近在解决公司官网兼容性问题(兼容要求:ie7+),于是借机总结一下ie浏览器的css兼容性问题,maybe后续会再总结一篇js的兼容性问题。

问题汇总及解决方法

列表li的楼梯Bug(IE6、IE7)

问题描述:li在IE7下呈楼梯状的效果,通常发生在li中放置了一些元素内容(比如说a)而且对其进行浮动,但li本身不浮动,此时在IE下就会有楼梯上了,具体先看下面的代码:

如图:
clipboard.png

解决方法
1.让li也浮动

ul li{
    float:left;
}

2.改变li的显示方式

ul li{
    display:inline;
}
li / a 标签竖排出现莫名间距

如图:

clipboard.png

clipboard.png

clipboard.png

解决方法
1.给a标签/li标签设置浮动

li / a{
    float:left;
    clear:both;
}
三个行内元素并排但有一个元素浮动,浮动的元素出现在下方
**html**
<p class="gift_nav">
    <span class="libao_zhongxin">新闻资讯/</span>
    <span class="gift_center">NEWS</span>
    <span class="dangqian_weizhi">当前位置:<a href="/dzz/home">官网首页&gt</a>
    <span class="zhongxin">新闻资讯</span>
    </span>
</p>

**css**
.gift_nav{
    width:100%;
    float:left;
    margin:0 auto;
    margin-top:40px;
 }
.libao_zhongxin{
    font-size:32px;
    font-family:'方正北魏楷书简体';
    color:#112763;
} 
.gift_center{
    font-size:16px;
    font-family:'方正北魏楷书简体';
    color:#112763;
}
.dangqian_weizhi{
    float:right;
    margin-top:15px;
    font-size:14px;
}

如图:
clipboard.png

clipboard.png

解决方法:
不要使用float定位,先对要浮动元素的父元素进行position:relative;定位然后对要右定位的元素进行position:absolute;right:0;top:15px;即可

li显示为inline但是没有浮动,ie7以下li并不能并排而是独占一行
**HTML**
<div class="pagination_outer">
    <ul class="pagination">
        <li><a class="btn btn-default <?php if($page-1<1){ echo 'disabled'; } ?>" role="button" href="<?php echo "$listurl?page=".($page-1)."&".$params; ?>" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
        <li><a class="btn btn-default" href="<?php echo "$listurl?page=".$page."&".$params; ?>"><?php echo $page; ?></a></li>
        <li><a class="btn btn-default <?php if($page+1>$totalPage){ echo 'disabled'; } ?>" <?php if($page+1>$totalPage){echo "style='display:none;'";}?> href="<?php echo "$listurl?page=".($page+1)."&".$params; ?>"><?php echo $page+1; ?></a></li>
        <li><a class="btn btn-default <?php if($page+2>$totalPage){ echo 'disabled'; } ?>" <?php if($page+2>$totalPage){echo "style='display:none;'";}?> href="<?php echo "$listurl?page=".($page+2)."&".$params; ?>"><?php echo $page+2; ?></a></li>
        <li><a class="btn btn-default <?php if($page+1>$totalPage){ echo 'disabled'; } ?>" href="<?php echo "$listurl?page=".($page+1)."&".$params; ?>" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>
    </ul>
</div>

**CSS**
.pagination_outer{
    width:100%;
    height:74px;
    float:left;
    text-align:center;
}
.pagination_outer .pagination a{
    float:none;
    border-radius:0 !important;
}

clipboard.png

clipboard.png

解决方法
1.使li浮动
2.使ul浮动

上一个相邻块设置了高度,但是它实际内容超出了高度,ie浏览器中下一个块会跟在它所设置的高度屁股后面而不是被实际内容挤下到下面
**html**
<div class="gift-container">
    <div classs="content"></div>
</div>
<div class="footer"></div>
**css**
.gift_container {
    width: 1120px;
    height: 800px;
    margin: 0 auto;
    margin-top: 468px;
}
//实际上content的内容超过了800px
.footer {
    width: 100%;
    color: #fffcfd;
    font-size: 15px;
    overflow: hidden;
    margin-top: 15px;
}

如图:

clipboard.png

clipboard.png

解决方法
很简单,把设置的高度去掉就好啦。。。/笑哭

给div设置了overflow-y:auto,ie7浏览器下overflow-x默认为overflow-x:visible;
div{
    padding:0 40px;
    background:#fff;
    height:1072px;
    overflow-y:auto;
}
    

如图:

clipboard.png

clipboard.png

IE浏览器计算属性:

clipboard.png

解决方法:
overflow-x:hidden

包含浮动元素的div所需的宽度在ie浏览器下比在标准浏览器下要宽

如图:

clipboard.png

clipboard.png


参考资料 - 鸣谢

IE常见Bug——part1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值