IE Compatibility
浏览器的一般兼容问题
1.html5、css3特性支持检测
资源:modernizr (下载时默认勾选 html5shiv ,在IE中模拟 html5 块状元素)
IE8及以下使用html5新元素(自己写的话)
section, article, aside, footer, header, nav, hgroup {
display:block;
}
<!--[if lt IE 9]>
<script>
document.createElement('section');
document.createElement('article');
document.createElement('aside');
document.createElement('footer');
document.createElement('header');
document.createElement('nav');
document.createElement('hgroup');
</script>
<![endif]-->2.IE使用
<!--[if IE 7]>
<link href="...">
<script>
// ie7 单独样式只需加个 .ie7父类即可
$(document.documentElement).addClass('ie7');
// IE7及以下::after/:after伪对象无效
$('.clearfix,.row').append('<h6 style="clear: both;"></h6>');
// IE7及以下box-sizing: border-box 无效
$('.row>[class*="col-"]').each(function (index, e){
var the=$(this);
if(the.parents('.hide').length){
return;
}
var borderLeft, paddingLeft, paddingRight, borderRight;
borderLeft=(the.css('border-left') ? parseFloat(the.css('border-left')) : 0);
paddingLeft=(the.css('padding-left') ? parseFloat(the.css('padding-left')) : 0);
paddingRight=(the.css('padding-right') ? parseFloat(the.css('padding-right')) : 0);
borderRight=(the.css('border-right') ? parseFloat(the.css('border-right')) : 0);
var width=Math.floor(parseFloat(the.width())-borderLeft-paddingLeft-paddingRight-borderRight);
if(width>200){
width--;
}
the.width(width);
});
</script>
<![endif]-->
<!--[if lt IE 8]>
<script src="..."></script>
<![endif]-->
<!--[if gt IE 8]>
<script src="..."></script>
<![endif]-->
<!--[if lte IE 8]>
<script src="..."></script>
<![endif]-->
// 不通过脚本添加类的写法
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="zh-CN">
<!--<![endif]-->3.IE下部分CSS3特性模拟
资源:css3pie
使用:必须通过web服务器使用,本地直接测试无效。下载整个资源包后,在对应CSS3代码后直接用 behavior 调用 .htc文件即可。
border-radius: 20px;
behavior: url(PIE-2.0beta1/PIE.htc);
// rgba
background: rgba(0,0,0,0.2);
-pie-background: rgba(0,0,0,0.2);
behavior: url(PIE-2.0beta1/PIE.htc);