IE浏览器兼容性问题解决方案

Posted fanyee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IE浏览器兼容性问题解决方案相关的知识,希望对你有一定的参考价值。

IE浏览器兼容性问题解决方案
一、CSS常见问题

1、H5标签兼容性

  解决方案:<script src="http://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>

2、元素浮动之后,能设置宽度的话就给元素加宽度,如果需要宽度是内容撑开的,就给它里边的块元素加上浮动float:left;

3、第一块元素浮动,第二块元素加margin-left值等于第一块元素宽度,在IE6下会有间隙问题

  解决方案:不要用margin-left,给两个元素都加上浮动float:left;

4、IE6下子元素超出父级宽高,会把父级宽高撑开,比如用于放置轮播的ul宽度会超出父元素

  解决方案:不要让子元素的宽高超过父级

5、P包含块元素嵌套规则

  牢记规则:p、h标签不能嵌套块元素

二、CSS兼容性问题

1、margin兼容性问题

  1)margin-top传递,子元素上下margin会传递给父级

  阻止:触发BFC(如overflow:hidden;拯救标准浏览器及IE78)、触发IE的haslayout  zoom:1(拯救IE67);

  2)上下margin叠压(触发条件:同级元素,第一个元素的下与第二个元素的上会叠压在一起)

  解决方案:两个元素分开设置margin,然后尽量使用同一方向的margin,比如margin-top

2、display:inline-block;   块元素变为内联块, IE67不兼容;内联元素变为内联块,所有浏览器都支持

  解决方案:{display:inline-block; *display:inline; *zoom:1;}

  发现问题:当然,变为内联块后,有一个特性就是如果元素换行,在页面上元素之间就会有空隙的,空隙大小为一个空格的像素大小。

3、IE6元素最小高度为19px

  解决方案:overflow:hidden;

4、IE67双边距,当元素浮动后,再设置margin,那么就会产生双倍边距

  解决方案:针对IE67,添加*display:inline;样式,比如页面上横向排列的几组块,会经常遇到

5、li里元素都浮动,在IE67下方会产生4px间隙问题

  解决方案:针对IE67,添加*vertical-align:top;样式

6、IE6下,两个浮动元素之间有注释或者内联元素并且和父级宽度相差不超过3px,会导致多复制一些文字问题

  解决方案:1)两个浮动元素之间避免出现内联元素或者注释

       2)与父级宽度相差3px或以上  

7、IE67父级元素的overflow:hidden;子元素设置position:relative后,就包不住子元素了

   解决方案:针对IE67,给父级元素添加position:relative;

8、IE6下绝对定位元素父级宽高是奇数,绝对定位元素的right和bottom值会有1px的偏差

   解决方案:避免父级宽度出现奇数

9、IE6下绝对定位元素和浮动元素并列绝对定位元素消失

   解决方案:浮动元素和绝对定位元素时同级的话,定位元素就会消失,只要让它们两个不处于同级就可以避免这个bug了

10、IE6下input的空隙

   解决方案:针对IE67,给input元素添加*float:left;

以上是关于IE浏览器兼容性问题解决方案的主要内容,如果未能解决你的问题,请参考以下文章

vue 项目在ie浏览器的兼容问题

如何解决bootstrap与ie不兼容问题

一条代码解决各种IE浏览器兼容性问题

如何解决 IE下 上传文件的兼容性问题

vue项目系统兼容IE浏览器问题以及解决方案

ie11兼容模式仍然无法正常显示怎么解决