IE6 bug修正的10个小技巧 推荐

1. 使用DOCTYPE
你应该在一直每个HTML文件的头部都使用DOCTYPE,并且我们推荐使用strict 版本,比如:
复制代码代码如下:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://imgbuyun.weixiu-service.com/up79/202210/1tysmenrq3f.dtd"
或者,对于XHTML使用:
!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://imgbuyun.weixiu-service.com/up79/202210/bmkbpgc3tgo.dtd
你需要处理的最棘手的事情就是IE6进入quirks模式它已经够诡异了。
2. 设置position: relative
将一个元素设置为position:relative可以解决很多问题,特别是你曾经遇到隐藏的或对齐诡异的盒子。显然,你需要非常小心点儿,因为绝对定位的子节点可能会因此重新定位。
3. 将浮动元素设置为display:inline
具有margin属性的浮动元素可能引起著名的IE6双倍margin问题,比如,你为一个元素指定margin-left为5px,但是IE6中实际上却表现为10px。display:inline将解决这个问题,尽管这不是必须的,你的CSS仍然是有效的。
4. 将一个元素设置为hasLayout
很多IE6(和IE7)的渲染问题可以通过设置元素的hasLayout来解决。 这是一个IE内部属性(IE隐藏的,更多关于haslayout的资料,可以参阅这里),用来确定相对于其他元素,内容是如何布局和定位的。如果你需要设置一个inline元素(比如一个链接)为block元素,或者是应用透明效果,设置hasLayout也可能是必须的。
最简单的设置hasLayout的方法是为CSS设置一个高度或宽度(zoom也可以用,但是zoom并不是CSS标准的一部分)。我们推荐设置实际尺寸,但是问题是这是不现实的,你可能需要使用height:1%。如果父元素并没有设置高度,该元素的实际高度并不受影响,而且这个时候hasLayout已经被启用。
5. 修正重复文字bug
复杂的布局可以触发在浮动元素的最后一些字符可能出现在出现在清除元素下面的bug。这里有几个解决方法,有些是完美的,但是做一些反复试验也是必须的:
确保所有的元素使用display:inline;
在最后一个元素上使用一个margin-right:-3px;
为浮动元素的最后一个条目使用一个条件注释,比如:
复制代码代码如下:
!--[if !IE]Put your commentary in here...![endif]--
在容器的最后元素使用一个空的div(它也有必要设置宽度为90%或类似宽度。)
访问 positioniseverything.net 查看该问题的完整介绍。
6. 在可点击和悬停的元素上只使用a标签
IE6只认识对a标签的CSS hover效果。
你也可以在基于JavaScript的组件内使用他们来控制,以使他们保持键盘的可操作性。是有一些可替代的选择,但是a标签比其它方案更可靠。
7. 使用!important 或高级选择器来区分IE6
不使用传统Hack或在额外文件中的条件CSS的方法,写出特别针对IE6的可行的代码也还是有可能的。比如最小高度可以通过这段代码来定义:
复制代码代码如下:
#element {
min-height: 20em;
height: auto !important; /* 所有浏览器都理解这段代码 */
height: 20em; /* IE6 错误的使用这个值 /*
}
IE6 不理解min-height并错误的用20em覆盖auto高度,但是,如果内容需要更多的空间的话,它会自动增加高度。
另外一个可选的方法是使用高级选择器,比如e.g.
复制代码代码如下:
#element {
min-height: 20em;
height: 20em;
}
/* IE6 无视下面的代码*/
#element[id] {
height: auto;
}
8. 避免百分比单位
百分比会把IE搞糊涂的。除非你可以确切的控制每一个父元素的大小,才可能做到最佳预防。你可以通过!important在其他浏览器中继续使用百分比,比如:
复制代码代码如下:
body {
margin: 2% 0 !important;
margin: 20px 0; /* IE6 only */
}
9. 尽早测试并不断测试
不要等到你的网站或应用完成了才测试IE6;这样的话问题可能更糟糕,而且会花更多时间来修正。如果你的网站能够在Firefox和IE6中正常运行,那么一般在其它浏览器就不会有问题。
10. 重构你的代码
经常发生的事情是,修正bug要比重新考虑一个布局问题要花更长的时间。对HTML做些小改动和一些简单的CSS常常更有效。这可能意味着你要放弃完美的代码,但是会出现较少的长期问题而且将来你会很清楚如果处理这些可能出现的问题。
神飞感言,虽然IE8并没有从根本上改变IE,但是它对CSS标准的支持的确有非常大的改观。但是即便如此,我们依然不能寄希望与IE8的普及,这是一件很不靠谱的事情,顽固的IE6用户未必会接受IE8。所以我们最近一年半载还是不能无视IE6。
如果你有其它比较好的可以解决IE6的bug的好方法或技巧,别忘了告诉前端观察哦~
相关内容
利用picsart设置透明特效的方法介绍
利用picsart设置透明特效的方法介绍,方法,透明,设置,调整,选...
酷狗音乐设置酷狗屏保的操作步骤
酷狗音乐设置酷狗屏保的操作步骤,酷狗,屏保,设置,酷狗音乐,界...
IE浏览器不让修改首页的小技巧
IE浏览器不让修改首页的小技巧,修改,快捷方式,参数,小技巧,浏...
JS实现设置ff与ie元素绝对位置的方法
JS实现设置ff与ie元素绝对位置的方法,元素,位置,方法,设置,窗...
让IE6支持HTML5元素的方法
让IE6支持HTML5元素的方法,方法,元素,支持,文件,网站,脚本,前...
IE6下css设置容器高度的BUG不能小于某个值
IE6下css设置容器高度的BUG不能小于某个值,设置,空标签,外边...
IE6图片元素img下出现多余空白的问题
IE6图片元素img下出现多余空白的问题,元素,方法,解决方法,对...
微信键盘设置在哪里 微信键盘设置方法
微信键盘设置在哪里 微信键盘设置方法,键盘设置,微信,方法,键...
微信键盘皮肤怎么设置 微信键盘皮肤在哪换
微信键盘皮肤怎么设置 微信键盘皮肤在哪换,键盘皮肤,微信,设...
ie11兼容模式在哪?IE11兼容模式怎么设置
ie11兼容模式在哪?IE11兼容模式怎么设置,兼容模式,设置,网站,...
IE10下Gridview后台设置行高不起作用解决方法
IE10下Gridview后台设置行高不起作用解决方法,行高,后台,解决...
IE与Firefox的CSS兼容大全 推荐
IE与Firefox的CSS兼容大全 推荐,兼容,填充,解释,设置,大全,推...
如何彻底优化IE浏览器 六种设置方法轻松优化你
如何彻底优化IE浏览器 六种设置方法轻松优化你的IE浏览器,方...
使用X-UA-Compatible来设置IE浏览器兼容模式
使用X-UA-Compatible来设置IE浏览器兼容模式,模式,兼容性,网...
为ie和chrome单独设置样式的方法
为ie和chrome单独设置样式的方法,设置,方法,这是,复制,样式,...