IE8兼容性问题的解决方案

前几天,面试到Ie8的一些兼容问题,傻眼了,回想自己做了将近2年的移动端项目,ie兼容似乎没怎么做过。所以私下便开始找找ie兼容的视频或者文章学习,唉,还是不买书了,家里那么多书,都没看过呢,好了,开始发一波福利:

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px "Helvetica Neue" }
span.s1 { }

一、HTML5标签兼容方案:html5shiv.js

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" }
span.s1 { }
span.s2 { text-decoration: underline }

GitHub地址:https://github.com/aFarkas/html5shiv/

IE8不支持HTML5的新标签,如<header>、<nav>等在IE8无法渲染,html5shiv.js 可帮助IE6-8浏览器兼容HTML5语义化标签

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" }
span.s1 { }

使用方法:在页面中引用html5shiv.js文件。必须添加在页面的<head>元素内,因为IE浏览器必须在元素解析前知道这个元素,所以这个js文件不能在页面底部引用。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px "Helvetica Neue" }
span.s1 { }

二、CSS3媒体查询兼容方案:Respond.js

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" }
span.s1 { }
span.s2 { text-decoration: underline }

GitHub地址:https://github.com/scottjehl/Respond

IE8不支持css3媒体查询,对响应式布局大大不利,Respond.js可帮助IE6-8兼容“min/max-width”媒体查询条件

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" }
span.s1 { }

使用方法:在页面中所有css文件的引用位置之后引用Respond.js。而且Respond.js的引用得越早,用户看到页面闪烁的机会越小。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px "Helvetica Neue" }
span.s1 { }

三、CSS3字体单位“rem”兼容方案:rem.js

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" }
span.s1 { }
span.s2 { text-decoration: underline }

GitHub地址:https://github.com/chuckcarpenter/REM-unit-polyfill

css3引入了新的字体大小单位rem,与em的“相对于其父元素来设置字体大小”的功能不同,rem是相对于根元素<html>的字体大小比率单位,成了目前的主流单位之一,IE9+开始支持,IE8就只能通过引入js库来支持了,

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" }
span.s1 { }

使用方法:在页面中引用rem.js文件。需要引用在页脚,也就是<body>末尾,在所有css文件引用和DOM元素之后。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px "Helvetica Neue" }
span.s1 { }

四、CSS3“background-size”属性的“cover”和“contain”属性值兼容方案:background-size polyfill

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" }
span.s1 { }
span.s2 { text-decoration: underline }

GitHub地址:https://github.com/louisremi/background-size-polyfill

具体使用方法,一看便知

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px "Helvetica Neue" }
span.s1 { }

五、JS数组的forEach方法兼容方案:自行实现

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" }
span.s1 { }

IE8的数组对象没有forEach方法,所以自行声明即可,代码如下:

if ( !Array.prototype.forEach) {

Array.prototype.forEach = function froEach (callback, thisArg) {

if (this == null) {

throw new TypeError("this is null or not defined")

}

let o = Object(this)

let len = o.length >>> 0 (无符号右移0位)

if ( typeof callback !== ‘function‘) {

throw new TypeError( callback + " is  not a function")

}

let k = 0, t;

if ( argument.length > 1 ) {

t = thisArg

}

while (k < len) {

let kValue;

if ( k in o) {

kValue = o[k]

callback.call(T, kValue, k , o)

}

k++

}

}

}

目前先写一个,日后再做补充

原文地址:https://www.cnblogs.com/xiaominsweet/p/9182173.html

时间: 2024-10-11 10:49:19

IE8兼容性问题的解决方案的相关文章

常见浏览器兼容性问题与解决方案【转】

常见浏览器兼容性问题与解决方案 原文:http://blog.csdn.net/chuyuqing/article/details/37561313/ 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果.所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题. 在学习浏览器兼容性之前,我想把前端开发人员划分为两类: 第一类是精确按

ie浏览器兼容性的入门解决方案

IE浏览器的兼容性素来是令人头疼的问题,大名鼎鼎的FUCK-IE不是浪得虚名的. 这里使用的解决方案是HACK,具体原理就是针对不同的浏览器写不同的HTML.CSS样式,从而使各种浏览器达到一致的渲染效果. HTML的兼容写法 HTML的HACK由注释<!--  -->演变而来,在高级浏览器中注释不会被加载,把IE浏览器的兼容代码写在注释中,IE浏览器会识别. <!--[if IE 6]> <p>只有IE6认识我</p> <![endif]-->

CSS 多浏览器兼容性问题及解决方案

css的兼容性也是大家关注的热点.大家一定要注意多测试. Javascript 多浏览器兼容性问题及解决方案 兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width 3.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式 4.div 的垂直居中问题: vertical-

bootstrap IE8 兼容性处理

1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 7 <meta name="viewport" content="wi

【Javascript】 IE8兼容性问题汇总

本章是在网页开发过程中所碰到的IE8兼容性问题做一个汇总. 尼玛太坑了,屡次踩坑,总是没记性.而且更坑的是IE8的开发者工具太难用了,想调试都调试不出来. 不得已只好记录下来,下次出问题了好方便排查. JS脚本中,必须遵循以下规则,否则都将导致JS脚本在IE8 错误. 1.所有js脚本的语句结束之后,必须以分号结束. 2.数组(Array)对象声明或赋值时,注意不能有多余的逗号(,)如: var arrNum = [1,2,4,]; var arrStr = [ {key:1}, {key:2}

浏览器样式兼容性问题及解决方案(一)

工作中经常会碰到浏览器样式兼容性的问题,从今天开始,收集和整理一些常见的兼容性问题,系统的学习下前端知识,欢迎大家指正交流. 1.浏览器默认的标签内外边距不同,用通配符*统一设置为0 *{margin:0px; height:0px;} 2.标签最低高度min-height不兼容 {min-height:200px; height:auto !Important; height:200px; overflow:visible;} 3.设置较小高度标签 当给指定标签设置较小高度时,就碰到与浏览器默

ie8下面margin:0 auto;不能居中的解决方案,ie8兼容性代码

今天写了个div,用margin:0 auto:来定义他的属性,让他居中,结果,竟然无效. 一开始以为是css里的代码冲突了,检查了好几遍,没问题,然后用火狐和谷歌浏览器测试,居中了... 看来是浏览器兼容性的问题,突然想起现在用了win7,ie已经升级到了ie8,看来问题就处在ie8的兼容性上.百度之.... 特将解决方法复制到下面: IE6,7,Firefox下实现居中一般用:margin: auto 来实现,但在IE8下,这是不够的.现提供两种解决的办法: 方法一(推荐): 首先页首必须设

常见几种浏览器兼容性问题与解决方案

所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果.所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题. 在学习浏览器兼容性之前,我想把前端开发人员划分为两类: 第一类: 是精确按照设计图开发的前端开发人员,可以说是精确到1px的,他们很容易就会发现设计图的不足,并且在很少的情况下会碰到浏览器的兼容性问题,而这些问题往往都死浏

常见浏览器兼容性问题与解决方案

1 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果.所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题. 2 3 在学习浏览器兼容性之前,我想把前端开发人员划分为两类: 4 5 第一类是精确按照设计图开发的前端开发人员,可以说是精确到1px的,他们很容易就会发现设计图的不足,并且在很少的情况下会碰到浏览器的兼容性问题,而这