浏览器的兼容性问题

1,h5标签兼容

     h5新增标签(header,footer,aside,section.....)在ie8以下是不认识的

解决方法一:通过document.createElement(‘header’),自己创建一个新的标签,因为是自定义的标签,浏览器会默认为是内敛元素,所以

                   我们要给创建的标签添加上display:block;方能生效;这样一个个创建有点麻烦

方法2:用网上成熟的库html5shiv.js


2,浮动兼容

box{
    width:500px;
    border:1px solid #000;
   overflow: hidden;
}
.right{

    background: red;
    float: right;
}
.left{
    background: yellow;
    float:left;
}

<div class="box">
     <div class="right">
         <h2>rigth</h2>
     </div>
    <div class="left">
        <h2>left</h2>
    </div>
</div>

显示应该是这样


当我给h2添加样式

h2{
    margin: 0;
    height: 30px;
}

在ie7以下就变成这样了


解决方法:让其也浮动,或者变为内联元素

h2{
    margin: 0;
    height: 30px;
   /* float:left*/ display: inline;
}


3,在ie7以下当子级的宽高大于父级时,父级会被撑大成子级的宽高


4,标签的正确嵌套

 p td h 标签里面不能嵌套块级标签

<h> <div>div</div></h>在ie7以下是这样的

所以不要这样写


5,margin问题

.box{background: green}

.item{ height: 50px;
    background: red;
    margin: 50px;
}

<div class="box">
    <div class="item"></div>
    <div class="item"></div>
</div>

下面的这个样子,我想应该都知道这个问题margin重叠和margin-top的传递,重叠问题我就不讲了,我就说说传递的问题

解决这个问题我们一般会给父级加上overflow:hidden

.box{background: green;overflow:hidden}
这个在一般标准的浏览器下问题就解决了

但是在ie7以下就不行了(ie7以下属于非标准浏览器),解决方法是给父级加上zoom:1触发非标准浏览器的haslayout,

.box{background: green;
    overflow: hidden;
    zoom: 1;
}


6,display:inline-block问题

box div { width: 100px;
        height: 100px;
        background:red;
       display: inline-block;
}
<div class="box">
     <div>1</div>
    <div>2</div>
    <div>3</div>
</div>

标准浏览器下显示如图

ie6显示

解决方法:

.box div { width: 100px;
       height: 100px;
       background:red;
       display: inline-block;
        *display:inline;
        *zoom:1
   }


7,最小高度问题
div{ height:1px;
     background: red;
   

<div></div>
ie6下的显示,会发现这根本就不像是1px的高度,量取会发现高度为19px,说明ie6下的最小高度是19px,
解决方法:加上overflow: hidden;


8,ie6,7 下li的子级都浮动时会产生4px的间隙
ul{margin: 0;
    padding:0;
    list-style:none;
   width: 300px;
}
ul li{
    height: 30px;
    border:1px solid red;
    line-height: 30px;
   
}
li a{float:left}
li span{float:right}
<ul>
    <li>
        <a href="#">左边</a>
       <span>右边</span>
    </li>
    <li>
        <a href="#">左边</a>
        <span>右边</span>
    </li>
    <li>
        <a href="#">左边</a>
        <span>右边</span>
    </li>
</ul>

解决方法:给li加上*vertical-align:top


9,ie6下文字会被复制
.box{ width: 400px}
.left{float:left;}
.right{float:right;width: 400px}

<div class="box">
    <div class="left"></div>
    <span></span><span></span><span></span>
    <div class="right">这里是文字溢出现象</div>
</div>

触发条件:当子级元素左右都浮动时,当left和right之间有内联元素或注释并且.right的宽度与父级宽度差小于3px时

当我们插入的内联元素越多,被复制的文字就越多

解决方法:1不要有内联元素或注释,2,将.right的宽度小于父级的宽度,如:397px

<div class="box">
    <div class="left"></div>
    <div class="right">这里是文字溢出现象</div>
</div>



10,ie6下当子级设置了position:relative时,父级包不住子级
.box{
    width:200px;
    height:200px;
    background: red;
    border: 5px solid #000;
    overflow: hidden;
}
.child{
    width:300px;
    height:300px;
    background: yellow;
    position:relative;
}

<div class="box">
    <div class="child"></div>
</div>


解决方法:给父级也加上position:relative;


10,IE6下绝对定位元素和浮动元素并列绝对定位元素消失
 .box{
        width:200px;
        height:200px;
        border:1px solid #000;
        position:relative;
    }
.left{
    width: 150px;
    height:150px;
    background: red;
    float:left;
    margin-left: 50px;
   *displsy:inline   /*防止双边距*/
}

 span{ width:50px;
height:50px;
background: yellow;
position:absolute;
top:-20px;
right:0;
}

<div class="box">
     <div class="left"></div>
    <span></span>
</div>

正常浏览器应该是这样


ie6下是这样

解决方法:不要让其并列
<div class="box">
     <div class="left"></div>
     <p>
         <span></span>
     </p>
</div>

11,IE6下input的空隙
.box{
          width: 200px;
          background:red;
          border:1px solid #000
      }
input{
    border:0;
    margin: 0;
    width:200px;
    height:30px;
    background: #fff;
}
<div class="box">
    <input type="text" />
</div>

标准浏览器下

    

ie6下,出现了红色的上下边框,解决方法:给input加上float:left;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值