201906学习计划-css不兼容ie8汇总

一、如何模拟ie8浏览器

因为目前win10的系统没有办法下载安装ie8。

1. ie11浏览器仿真ie8

能测试大部分ie8不兼容的问题。但在实际开发过程中仿真ie8还是会有复现不出来的ie8不兼容问题。具体原因没有找到。

2. IETester

IETester能测试大部分问题,但是IETester的调试工具太落后且需要下载IETester客户端,开发者更愿意使用高版本的IE仿真到低版本测试。

3. 安装虚拟机测试ie8
  • 虚拟机安装包地址:
    链接:https://pan.baidu.com/s/1U-23dSPD7YNvfLDVLNxDuA
    提取码:spck

  • 系统盘安装包地址:(尽量使用这一个.iso文件,从其他地方下载试了2个都不能在虚拟机上安装好,ghost版本的也试了不行)
    链接:https://pan.baidu.com/s/1CegGe9DOJhe7DDChDVDOmQ
    提取码:iy7w

  • 安装win7系统教程

二、浏览器内核

1. 概念

最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,负责对网页语法的解释并渲染(显示)网页。是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。

2. 分类

(浏览器不同版本内核不同,许多是双核。带有IE内核的双核浏览器,通常Trident为兼容浏览模式,另一个为高速浏览模式。)
(1)Trident(IE内核):IE6~10、360安全浏览器、360极速浏览器、傲游浏览器…(很多)
(2)Gecko(Firefox内核):火狐浏览器
(3)Presto(Opera前内核) (已废弃):Opera浏览器(早期版本)
(4)Webkit(Safari内核,Chrome内核原型):Safari浏览器,Android 默认浏览器
(5)Blink(Google和Opera Software开发):Chrome浏览器

参考文献:
百度百科:浏览器内核

三、ie8不兼容的常用css

Internet Explorer 8 完全符合CSS 2.1规范,并支持某些CSS 3的功能。

1.ie8不支持的常用css属性:
属性名称代码chromeie8
background-sizebackground-size:50px 50px;在这里插入图片描述在这里插入图片描述
linear-gradientbackground: linear-gradient(#000, #EEE);在这里插入图片描述不显示背景色在这里插入图片描述
radial-gradientbackground: radial-gradient(#000, #EEE);在这里插入图片描述不显示背景色在这里插入图片描述
border-imageborder: 10px solid transparent;border-image:url(./images/border.png) 30 round;在这里插入图片描述在这里插入图片描述
border-radiusborder-radius:15px在这里插入图片描述在这里插入图片描述
box-shadowbox-shadow: 10px 10px 5px #888;在这里插入图片描述在这里插入图片描述
outline-offsetoutline:2px solid red;outline-offset:15px;在这里插入图片描述在这里插入图片描述
transition.eg{transition:width 2s;} .eg:hover{ width:300px;}有渐变过程在这里插入图片描述无渐变过程在这里插入图片描述
opacityopacity:0.2;在这里插入图片描述在这里插入图片描述
rgba()颜色background:rgba(0,0,0,0.8);在这里插入图片描述不显示背景色在这里插入图片描述
2.ie8不支持的css单位:
  • deg - grad - rad - ms - s
  • Hz - kHz - turn - gd - rem
  • vw - vh - vm - ch

【解决rem不兼容的方法】:
在页面中引用rem.js文件。需要引用在页脚,也就是末尾,在所有css文件引用和DOM元素之后。
【rem.js文件地址】:
链接:https://pan.baidu.com/s/1gq-lCoImNhj1KnQh1qY3pw
提取码:gnl0

3.html5新标签不兼容ie8

需要用到条件注释和html5shiv脚本,git地址:https://github.com/aFarkas/html5shiv

<!--[if lt IE 8]>
<script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<![endif]—>
4.媒体查询media不兼容ie8

需要用到条件注释和respond.min.js文件。

<!--[if lt IE 8]>
<script src="//cdn.bootcss.com/respond.js/1.4.2/respond.js"></script>
<![endif]—>

参考文献:
微软官网:CSS 兼容性和 Internet Explorer
ie8不兼容的css属性
解决IE8下opacity属性失效问题
IE8不支持的部分css3属性处理

三、解决方法

1.引入.htc文件

htc文件地址:
链接:https://pan.baidu.com/s/1HS9lNpanYOrQVcW0HLDuoQ
提取码:08pf

属性代码.htc文件
background-sizebackground:#eee url(./images/back.jpg) no-repeat;background-size:50px 50px;behavior:url(./htc/backgroundsize.min.htc);backgroundsize.min.htc
border-radiusborder-radius:15px;behavior: url(./htc/PIE-1.0.0/PIE.htc);PIE.htc
box-shadowbox-shadow: 10px 10px 5px #888; behavior: url(./htc/PIE-1.0.0/PIE.htc);PIE.htc
2.css hack

【概念】:把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack。
【原理】:由于不同的浏览器和浏览器各版本对CSS的支持及解析结果不一样,以及CSS优先级对浏览器展现效果的影响,我们可以据此针对不同的浏览器情景来应用不同的CSS。
【利弊】:使用hack虽然对页面表现的一致性有好处,但过多的滥用会造成html文档混乱不堪,增加管理和维护的负担。(个人认为,这要背的太多,而且ie8及以上不同版本符号还不同,不仅把css写复杂了,还要多写几行为兼容多个版本的ie,没有必要使用)
【表现形式】:属性前缀法、选择器前缀法以及IE条件注释法。

  • 属性前缀法(即类内部Hack):例如 IE6能识别下划线"“和星号” * “,IE7能识别星号” * “,但不能识别下划线”",IE6~IE10都认识"\9",但firefox前述三个都不能认识。
  • 选择器前缀法(即选择器Hack):例如 IE6能识别html .class{},IE7能识别+html .class{}或者*:first-child+html .class{}。
  • IE条件注释法(即HTML条件注释Hack):针对所有IE(注:IE10+已经不再支持条件注释): ,针对IE6及以下版本: 。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。

参考文献:
IE8兼容性问题及解决方案
史上最全的CSS hack方式一览(解决IE6-IE11,Firefox/Safari/Opera/Chrome兼容问题)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值