浏览器的兼容性问题

2019-06-25  本文已影响0人  fly_198e

浏览器的兼容性问题是指同一份代码,有的浏览器效果正常,有的浏览器不正常。

兼容问题的主要来源:

  1. 同一产品,版本太老,bug越多,浏览器的更新本身就有修复这些bug的原因,添加支持新增代码,新增功能以及代码的新规则等等,则同一产品,版本越新功能越多,相对的bug也会少一些;
  2. 不同产品,不同标准,不同的实现方式;因为虽说以w3c为主流,但是浏览器还有内核差异,渲染方式的差异,同一属性不同浏览器不同的效果等。

处理兼容性问题的主要思路:

渐进增强和优雅降级

处理兼容问题的手段

合适的框架:
  1. bootstrap(>=ie8)
  2. jQuery 1(>=ie6),jQuery2(>-ie9)(2的代码量比1的小,文件体积也小)
  3. Vue(>=ie9)
条件注释:
<!-- [if IE 6]>
<p> you are using Internet Explorer 6.<p>
<!--[endif]-->
 <!--该代码表示,如果浏览器是IE6 则出现该p标签-->
<!-- [if !IE]><!-->
<script>alert(1);</script>
<!--[endif]-->
<!--如果非IE浏览器则代码前后两段都是注释,则会出现弹窗,反之则不会出现弹窗-->

CSS hack

什么是CSS hack:
CSS Hack:
常见的hack写法:
.box{
  color: red;
_color: blue;/*ie6*/
*color: pink;/*ie67*/
color: yellow;/*ie6-8*/
}
<!-- [if IE7]>
<link rel="stylesheet" href="ie7.css" type="text/css"/>
<![ebdif]>

由于IE8以前IE浏览器并不支持display:inline-block;,则通过下面样式达到效果。

.target{
  display:inline-block;
*display: inline;
*zoom: 1;   /*IE67特有的样式,使元素生成类似BFC  的效果,可以设置宽高等效果*/
}

由于IE67不支持after,所以对于清除浮动有以下代码;

.floatfix::after{
content: '';
display: block;
clear: both;
}
.floatfix{
*zoom:1;/*仅对IE67有效*/
}

给<html>赋予属性用于需要达到解决兼容性问题;

<!-- [if IE8 ]>
<html dir="ltr" lang="en-us" class=" no-js ie8 oldie">
<![endif] -->
.ie8 .box{
  color: blue;
}
常见的属性兼容情况:
Modernizr:
<html class="no-js">
.no-flexbox .box{
  display:block;
}

在用户禁用js时,无法使用时需提示用户使用js。

.no-js{

}
何动手测试浏览器兼容性:
上一篇 下一篇

猜你喜欢

热点阅读