10个常见的IE bug和解决方法

M侯赛因G

M侯赛因G

2016-02-20 00:25

下面,图老师小编带您去了解一下10个常见的IE bug和解决方法,生活就是不断的发现新事物,get新技能~

我列举了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不能正确的渲染它。下面是他建议的解决方案列表:

解决方法

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)使用![IF !IE]标签包围注释 移除注释 在前浮动上增加样式 {display:inline;} 在适当的浮动的div上使用负边距 在原文本增加额外的 (比如10个空格) (hacky way)

2、相对位置和溢出隐藏(Position Relative and Overflow Hidden)

这个问题我遇到过很多次,当时我正在准备一个JQuery的教程,因为我使用了很多overflow hidden来达到我想要的布局。
问题发生在当父元素的overflow被设置成hidden并且子元素被设置成position:relative。
CSS-Trick有一个很好的例子来演示这个bug。position:relative and overflow in internet explorer

解决方法

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

为父元素增加position:relative;

3、IE的最小高度(Min-Height for IE)

这很简单,IE忽略min-height属性。你可以用下面的hack来修复它。感谢Dustin Diaz。

这个解决方法在IE6, Mozilla/Firefox/Gecko, Opera 7.x+, Safari1.2里都工作的很好。

解决方法

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

 

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代码来达成目的。

解决方法

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

 

/* in the iframe element */ 
iframe src="content.html" allowTransparency="true" 
/iframe 

/* in the iframe docuement, in this case content.html */ 
body {
    background-color:transparent;    
}

 

7、禁用IE默认的垂直滚动条(Disabled IE default Vertical Scroll bar)

默认情况下,即使内容适合窗口大小,IE(译注:IE6/7)也会显示垂直滚动条。你可以使用overflow:auto,让滚动条只在你需要时出现。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

 

html {
    overflow: auto; 
}

 

8、:hover伪类(:hover Pseudo Class)

IE只支持a元素的 :hover伪类。你可以使用jQuery的hover event来达到相同效果。

解决方法

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

 

/* jQuery Script */ 
$('#list li').hover( 

    function () { 
        $(this).addClass('color'); 
    }, 

    function() { 
        $(this).removeClass('color'); 
    } 
); 

/* CSS Style */ 
.color { 
    background-color:#f00;   

/* HTML */ 
ul id="list" 
    liItem 1/li 
    liItem 2/li 
    liItem 3/li 
/ul

 

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来解决这个问题。

解决方法

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

 

div#content { 
    float:left; 
    width:200px; 
    margin-left:10px; 

    /* fix the double margin error */ 
    display:inline; 
}

展开更多 50%)
分享

猜你喜欢

10个常见的IE bug和解决方法

Web开发
10个常见的IE bug和解决方法

IE 缓存策略的BUG的解决方法

Web开发
IE 缓存策略的BUG的解决方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MAC磁盘常见问题和解决方法

电脑入门
MAC磁盘常见问题和解决方法

BIOS常见的错误信息和解决方法

电脑入门
BIOS常见的错误信息和解决方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

《文明 太空》常见BUG及解决方法攻略

电脑网络
《文明 太空》常见BUG及解决方法攻略

KTV麦克风常见的故障和解决方法

生活常识
KTV麦克风常见的故障和解决方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

4月21日全国哀悼日网页变灰色的CSS代码

4月21日全国哀悼日网页变灰色的CSS代码

带箭头的图案qq分组设计_仅剩的光线也被洗去了

带箭头的图案qq分组设计_仅剩的光线也被洗去了
下拉加载更多内容 ↓