告诉你10个常见的IE bug和解决方法:
我列举了10个常见的IE bug和解决方法。我相信这将能够帮助你减少调试IE布局不一致时花掉的时间。
在处理IE方面每个人都有他们自己的故事。作为一个开发者我不得不面对大量的IE的古里古怪的问题并且有的时候你只是想用头撞墙。但是随着时间的推移,我们慢慢吃一堑长一智(有些时候那不是我们的错,是IE的错!)并且开始接受和理解IE的怪异行为。我们不得不这样因为仍然有数量可观的IE6用户。最好的做法是一开始就不断的从不同的浏览器测试你的网站。从一开始就解决布局问题要比在数千行html和css代码之后容易的多。
有很多运动在抗议IE6,支持它的是大多数web专家和看起来不怎么关心的普通用户。所以,我们现在能做什么?我们不得不继续挖掘来解决IE6的问题。但是,等一下,有一个振奋人心的消息。基于w3cschool的月度报表,IE6的用户这些年已经减少了一些。从2006年6月的60.3%到现在2009年9月的13.6%。按照这种比例,我们应该能在2010年年底的时候放弃IE6(译注:国外的情况还真是一片大好啊~。~)
好了,回到现实,我已经列出了全部我之前遇到的问题作为未来参考的列表。我相信这将能够帮助你减少调试IE布局不一致时花掉的时间。
1、IE6 幽灵文本(Ghost Text bug)
在我写本文之前,我遇到了这个bug。它相当的古怪和滑稽。一块不知哪来的重复的文本,被IE6显示在靠近原文本的下面。(译注:也可以参看 Explorer 6 Duplicate Characters Bug 获得bug演示)。我无法解决它,所以我搜索它,果然,这是另一个IE6的bug。
对此有许多解决方法,但是没有一个对我的例子有效(因为网站的复杂性我无法使用其中的一些方法)。所以我使用了hack。在原文本之后增加空格看起来能解决这个问题。
但是,从 Hippy Tech Blog 那里了解到,问题背后的原因是由于html注释标签。IE6不能正确的渲染它。下面是他建议的解决方案列表:
解决方法:
2、相对位置和溢出隐藏(Position Relative and Overflow Hidden)
这个问题我遇到过很多次,当时我正在准备一个JQuery的教程,因为我使用了很多overflow hidden来达到我想要的布局。
问题发生在当父元素的overflow被设置成hidden并且子元素被设置成position:relative。
CSS-Trick有一个很好的例子来演示这个bug。position:relative and overflow in internet explorer
解决方法:
为父元素增加position:relative;
3、IE的最小高度(Min-Height for IE)
这很简单,IE忽略min-height属性。你可以用下面的hack来修复它。感谢Dustin Diaz。
这个解决方法在IE6, Mozilla/Firefox/Gecko, Opera 7.x+, Safari1.2里都工作的很好。
解决方法:
selector { min-height:500px; height:auto !important; height:500px; } |
4、Bicubic图像缩放(Bicubic Image Scaling)
你会喜欢这个的。IE那糟糕图像缩放让你很困扰?如果你拿IE和其他浏览器比较,IE缩小的图像看起来不如其他浏览器。
解决方法:
img { -ms-interpolation-mode: bicubic; } |
5、 PNG透明(PNG Transparency)
我猜每个人都知道这个,但我仍把它列在这里,作为以后的参考。
所以如果你想要使用透明图像并且GIF不能给你想要的质量,你会需要这个对PNG的hack。你必须意识到,如果你使用一张PNG图像作为背景,你将不能设置背景的位置。
解决方法:
img { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...); } |
6、 IFrame透明背景 (IFrame Transparent Background)
在firefox和safari里你应该不会遇到这个问题因为默认情况下,iframe的背景被设置为transparent,但是在IE里,却不是如此。你需要用到allowTransparency 属性并且加入下面的CSS代码来达成目的。
解决方法:
/* in the iframe docuement, in this case content.html */ |
7、禁用IE默认的垂直滚动条(Disabled IE default Vertical Scroll bar)
默认情况下,即使内容适合窗口大小,IE(译注:IE6/7)也会显示垂直滚动条。你可以使用overflow:auto,让滚动条只在你需要时出现。
html { overflow: auto; } |
8、:hover伪类(:hover Pseudo Class)
IE只支持元素的 :hover伪类。你可以使用jQuery的hover event来达到相同效果。
解决方法:
/* jQuery Script */ function () { function() { /* CSS Style */ /* HTML */
|
9、盒模型Hack(Box Hack Model)
这是IE里最热门的bug了。基本的理解是,IE计算宽度(width)的方式不同。基于w3c标准,一个元素总宽度应该是:
总宽度 = margin-left + border-left + padding-left + width + padding-right + border-right + margin-right
但是,IE计算宽度时没有加上填充和边框:
总宽度 = margin-left + width + margin-right
更多的细节,请参考这个链接:Internet Explorer和CSS盒模型详细解释
解决方法:
使用w3c的标准兼容模式。IE6或者之后的版本能基于w3c的标准计算,但是你仍旧会在IE5中遇到问题。
或者你可以用CSS Hack来解决这个问题。所有标准兼容的浏览器都能读取w\\idth:180px 除了IE5。
#content { padding:10px; border:1px solid; width:200px; w\\idth:180px; } |
10、 双倍边距bug(Double Margin Bug Fix)
如果你有一个分配有左/右边距的浮动元素,IE6会使得边距双倍化。比如,margin-left:5px 将会变成10px。你可以通过对浮动元素添加display:inline来解决这个问题。
解决方法:
div#content { /* fix the double margin error */ |
相关视频
相关阅读 围攻Besiege提示intersecting ground解决方法 围攻intersecting 围攻besiege联机教程 围攻besiege怎么联机围攻wegame版MOD安装教程 围攻wegame版怎么打MODDamnview Built From Nothing什么时候出 Damnview从零做起发售时the destiny star of girlfriend中文攻略 the destiny star of gOrigin Access Premier什么时候出 Origin Access Premier上线时间Origin Access Premier多少钱 Origin Access Premier价格一览EA高级会员多少钱 EA高级会员多少钱
热门文章 谷歌浏览器提示adobe 猎豹浏览器怎么设置兼搜狗浏览器怎么设置自qq浏览器书签不见了怎
最新文章
百度浏览器导出收藏夹Chromium和Chrome区别
如何禁止谷歌浏览器隐藏url的www前缀 禁止c谷歌浏览器怎么安装离线插件 Chrome浏览器安谷歌浏览器商店打不开怎么办 Chrome应用商店谷歌插件已损坏怎么办 Chrome插件提示已损坏
人气排行 Tampermonkey怎么用 Tampermonkey油猴插件安360浏览器主页怎么修改 主页改不了解决办法新浪微博登陆首页解决“chrome adobe flash player不是最新版360浏览器怎么屏蔽广告?360广告拦截的设置谷歌浏览器打不开怎么办 谷歌浏览器打不开解谷歌浏览器怎么翻译网页 谷歌浏览器翻译网页谷歌浏览器商店打不开怎么办 Chrome应用商店
查看所有5条评论>>