首页 > 代码库 > 关于 IE 这坨屎
关于 IE 这坨屎
世界上最不要脸的事情就是ie8也弹出提示:“是否要将IE设置为默认浏览器"!!!
记录下最近遇到的IE的bug,大部分是样式的问题,因为jquery很好的解决了js的兼容性问题。
1.ie6/7 当text-ident遇到inline-block时,整个标签会被缩进掉。解决方案:1使用block+float,但无法居中。2再标签前面加个 占位符即可。
2.ie下空标签失效解决办法:background:url(about:blank);
3. overflow失效!样式position:relative引起!解决:再父类加position:relative;
4.ie: margin双倍!浮动引起!解决:display:inline;
5.透明:{filter: alpha(opacity=60)}
6.常用头部html代码
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="zh-CN" class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="zh-CN" class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="zh-CN" class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="zh-CN" class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html><!--<![endif]-->
<head>
<title></title>
<meta charset="utf-8" />
<meta name="renderer" content="webkit"> //360默认使用极速模式,即webkit内核
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0" /> //mobile下自适应,现在大多数智能手机的浏览器已经可以默认自适应了
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> //在未指定DOCTYPE时,在ie下文本模式会进入quirks模式,IE=edge会使其选择最高版本的文本模式,IE=8,则会选择文本模式IE8,如果安装了GCF,则可以使用chrome内核渲染(chrome太强大了),这里用处不大,因为一般都会有DOCTYPE,主要是在服务器上配置很有用。在服务器端指定响应头为IE=edge作用是:在使用以ie为内核的浏览器时(例如360安全模式)会使其文本模式选择最高版本的,这很重要。
apache下指定自定义http响应头
LoadModule headers_module modules/mod_headers.so
Header set X-UA-Compatible “IE=edge”
参考http://msdn.microsoft.com/library/cc817573.aspx
7.ie6下不支持console,ie7/8是支持的,但是使用360浏览器,当本地ie版本<=8时,当从极速模式切换到安全模式时,console对象会丢失,如果console.log则会导致页面挂掉。可以简单定义个:window.console = window.console || {log: Function};
8.页面变灰样式
html{
filter: grayscale(100%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: url("data:image/svg+xml;utf8,<svg xmlns="\‘http://www.w3.org/2000/svg\‘"><filter id="\‘grayscale\‘"><feColorMatrix type="\‘matrix\‘" values="\‘0.3333" 0.3333="" 0="" 1="" 0\‘=""></feColorMatrix></filter></svg>#grayscale");
filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
-webkit-filter: grayscale(1);
}
9.ie下的placeholder
define([‘jquery‘], function($){
if(‘placeholder‘ in document.createElement(‘input‘)){
return;
}
$("input[placeholder]").each(function(){
var $this = $(this);
if($this.attr("type") === "password"){
return true;
}
var placeholder = $this.attr("placeholder");
$this.focus(function(){
if($this.val() == placeholder){
$this.val("").focus();
}
});
$this.blur(function(){
if($this.val() == ""){
$this.val(placeholder);
}
});
if($this.val() == ""){
$this.val(placeholder);
}
});
});
10.针对ie做处理的引用方式
<!--[if IE 6]><script src=http://www.mamicode.com/"/js/ie6.js" type="text/javascript" /></script>
关于 IE 这坨屎