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

2016-02-20 00:25 9 1 收藏

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

【 tulaoshi.com - Web开发 】

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

解决方法

使用![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

解决方法

为父元素增加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 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,让滚动条只在你需要时出现。

 

html {
    overflow: auto; 
}

 

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

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

解决方法

 

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

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

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

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

/* 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来解决这个问题。所有标准兼容的浏览器都能读取width:180px 除了IE5。

 

#content { 
    padding:10px; 
    border:1px solid; 
    width:200px; 
    width:180px; 
}

 

10、 双倍边距bug(Double Margin Bug Fix)

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

如果你有一个分配有左/右边距的浮动元素,IE6会使得边距双倍化。比如,margin-left:5px 将会变成10px。你可以通过对浮动元素添加display:inline来解决这个问题。

解决方法

 

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

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

来源:http://www.tulaoshi.com/n/20160220/1631808.html

延伸阅读
标签: 分娩
宝宝口吃怎么办? 幼儿 在学说话的阶段,出现口吃的现象。家长要引起注意,同时不能嘲笑或责怪孩子。家长应利用正确的方法来引导孩子改正口吃的现象。 宝宝口吃的原因 遗传因素:口吃患者家族发病率可达36%~55%,故有人认为与遗传因素有关,可能为单基因遗传。也有人发现口吃患者及亲属中左利手多见,认为口吃与大脑优势侧有...
标签: 浏览器
IE10不显示图片的解决方法   最近小编发现IE10不显示图片,尤其在淘宝网上,如下图,用别的浏览器可以正常显示。引起这类问题的原因很多,下面说说解决方法。 IE 10 不显示图片 问题一、可以看到大部分图片,但无法看到所有图片 如果只有个别图片或页面存在这种问题,应当能够在该站点或其他站点上查看部分图片...
标签: 电脑入门
常见故障一:找不到鼠标 1. 鼠标彻底损坏,需要更换新鼠标。 2. 鼠标与主机连接串口或PS/2口接触不良,仔细接好线后,重新启动即可。 3. 主板上的串口或PS/2口损坏,这种情况很少见,如果是这种情况,只好去更换一个主板或使用多功能卡上的串口。 4. 鼠标线路接触不良,这种情况是最常见的。接触不良的点多在鼠标内部的电线与电路板的连接...
标签: 电脑入门
常见故障一:开机无显示 内存条原因出现此类故障一般是因为内存条与主板内存插槽接触不良造成,只要用橡皮擦来回擦试其金手指部位即可解决问题(不要用酒精等清洗),还有就是内存损坏或主板内存槽有问题也会造成此类故障。 由于内存条原因造成开机无显示故障,主机扬声器一般都会长时间蜂鸣(针对Award Bios而言)。 常见故障二:Windows注册表...
标签: 电脑入门
如何在IE10中使用收藏夹? 在 Windows 8 Consumer Preview 中使用IE收藏夹与使用之前版本的传统收藏夹不同。您可以将网站锁定至开始屏幕,或使用新建选项卡打开锁定的站点列表和经常访问的站点。 桌面上的IE10浏览器使用传统收藏夹,但是您无法从开始屏幕访问锁定的站点。 如何在IE10中使用兼容性视图? 若要以兼容性视图显示某个网站,请在...

经验教程

842

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部