浏览器兼容性杂谈

原文地址: 小昱博客 - 浏览器兼容性杂谈 转载请注明出处,谢谢!


html5shiv.js让IE6-8浏览器支持HTML5新标签

参考文章

GitHub官方地址

使用方法
<!--[if IE]>
  <script src="html5shiv.js"></script>
<![endif]-->

Respond.js让IE6-8浏览器支持媒体查询

参考文章

Respond.js让IE6-8支持CSS3 Media Query

GitHub官方地址

使用方法

1.在css中正常用 min/max-width media queries

@media screen and (min-width: 480px){
  ...styles for 480px and up go here
}

2.引入respond.min.js,但要在css的后面(越早引入越好,在ie下面看到页面闪屏的概率就越低,因为最初css会先渲染出来,如果respond.js加载得很后面,这时重新根据media query解析出来的css会再改变一次页面的布局等,所以看起来有闪屏的现象)

<!--[if IE]>
  <script src="respond.js"></script>
<![endif]-->
实现思路

1.把head中所有的css路径取出来放入数组

2.然后遍历数组一个个发ajax请求

3.ajax回调后仅分析response中的media query的min-width和max-width语法,分析出viewport变化区间对应相应的css块

4.页面初始化时和window.resize时,根据当前viewport使用相应的css块。

总结

优点:压缩后仅1k,不跨域时性能ok,只需引入respond.js通用易用

缺点:仅支持media query的min-width和max-width(用于响应式够用);支持跨域,虽然配置有点麻烦,实现跨域代价高而且有闪屏体验欠佳。

IE6~IE8中使用css3的选择器

参考文档

使用Selectivizr让IE6~8支持CSS3

官方网站

使用方法

Selectivizr的使用非常的简单,但是并不能直接使用,在使用前需要先加载下列框架中的任何一个:JQuery、dojo、prototype、Yahoo YUI、DOMAssistant、mootools、NVMatcher。需要注意的是Selectivizr对各个框架的支持程度不一,具体可查看官方网站。 然后在页面里引用Selectivizr即可。

<script type="text/javascript" src="[JS library]"></script>
<!--[if lt IE 9]>
    <script type="text/javascript" src="selectivizr-min.js"></script>
< ![endif]-->
注意事项
  1. Selectivizr会自动检测最好的JS框架,如果你当前页面中正在使用如JQuery框架,但是它对Selectivizr的支持并不太好,你只需要在页面中再调用另一个(如Mootools)即可。
  2. CSS样式必须使用标签引入,还可以使用@import,但不能在页面里使用

让多核浏览器使用 webkit 内核渲染

参考文档

指定360安全浏览器使用 webkit 内核渲染

概述

目前国内不少浏览器都自称双核,一般是 IE(Trident)+Webkit。因为 webkit 急速的体验和对 HTML5 的支持,有些情况下(我们)开发者可能希望用户优先甚至只使用 webkit 内核渲染,比如通过 Meta 标签来指定。然而目前还没有任何一个公认的标准来实现。大多数用户根本分不清浏览器双核之间的区别(大概认为跟双核安卓手机的“双核”差不多吧)。把决定权交给开发者,以此给用户带来更好的浏览体验,不失为一件好事。

<meta name="renderer" content="webkit | ie-comp | ie-stand">

若页面需默认用极速核,增加标签:

<meta name="renderer" content="webkit">

使用当前电脑当中最高的ie版本进行渲染

参考文章

使用X-UA-Compatible来设置IE浏览器兼容模式

使用方法
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
使用说明

IE8支持几种文件兼容性模式,它们具有不同的特性并影响内容显示的方式。

•Emulate IE8 mode
•Emulate IE7 mode
•IE5 mode
•IE7 mode
•IE8 mode
•Edge mode

低版本ie兼容问题的解决方案

参考文章

低版本ie兼容问题的解决方案

1、CSS hack
2、IE6双边距

​ 当元素浮动后,再设置同方向margin,会产生双边距

​ 解决:增加

*display:inline;
3、IE6最小高度问题

​ IE6下最小高度19px,想小于此高度,增加

*overflow:hidden;

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

​ 针对li添加

*vertical-align: top;
5、浮动元素之间注释,导致多复制一个文字问题

​ 两个浮动元素中间有注释或者内联元素并且和父级宽度相差不超过3px时,

​ 1)两个浮动元素中间避免出现内联元素或者注释
​ 2)与父级宽度相差3px或以上

6、IE6 7 父级元素的overflow:hidden 是包不住子级的relative

​ 针对ie6、7给父级元素添加相对定位

overflow: hidden;
*position: relative;
7、IE6下绝对定位元素父级宽高是奇数,绝对定位元素的right和bottom值会有1px的偏差

​ 避免父级宽高出现奇数

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

​ 浮动元素和绝对定位元素是同级的话定位元素就会消失

​ 解决:不处于同级

9、IE6 下input的空隙

​ 给input元素添加float

10、display:inline-block

​ IE6下使用

*display:inline;
*zoom:1;
11、margin兼容性问题   

​ 1)margin-top传递
​ 触发BFC、haslayout,父元素增加

overflow: hidden;
zoom:1;

​ 2)上下margin叠压

​ 尽量使用同一方向的margin,比如都设置top或者bottom

12、p 包含块元素嵌套规则

    不要嵌套

13、IE6下子元素超出父级宽高,会把父级的宽高撑开

    不要让子元素的宽高超过父级

14、第一块元素浮动,第二块元素加margin值等于第一块元素,在IE6下会有间隙问题; 

    1)不建议这么写
    2)用浮动解决

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

    浮动元素中存在块元素,给块元素增加float

16、IE6不支持png24 图片

    1)JS插件(问题:不能处理body之上png24)

下载地址:http://www.dillerdesign.com/experiment/DD_belatedPNG/#download

<meta charset="utf-8">
<title></title>


<style>
    body{
        background-color: red;
    }
    div{
        width: 300px;
        height: 300px;
        background: url("img/png.png") no-repeat;
    }
</style>


<div></div>
<img src="img/png.png" alt="">

    2)原生滤镜

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="js/DD_belatedPNG_0.0.8a.js"></script>
        <script>
            DD_belatedPNG.fix("body");
        </script>
        <style>
            body{
                width: 500px;
                height: 500px;
                background:red url("img/png.png") no-repeat;
                _background-image:none;
                _filter : progid:DXImageTransform.Microsoft.AlphaImageLoader(src="img/png.png", sizingMethod="crop");
            }
        </style>
    </head>
    <body>
    </body>
</html>
17.img下面出现一条缝
img{
  display: block;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值