`

(转)IE FF不兼容问题及解决方法

UI 
阅读更多

收集了一些常见的兼容问题解决方法 与大家一起分享

1. 文字大小不兼容。
同样14px的宋体字,ie下实际占高16px,下留白3px,firefox下实际占高17px,上留白1px,下留白3px。
文字大小不兼容解决方案:给所有文字设定通用line-height

2. div高度不兼容:
firefox下div容器定义height后,div不会因为内容超出height而撑大,而i6e下是会被内容撑大,高度限定失效。所以不要轻易给容器定义height。

div高度不兼容解决方案:
如果设置高度,需要同时把内容物高度限定,也就是溢出隐藏处理:overflow:hidden ;或者当需要随着内容自适应高度,但又想div有一个最小的高度时候,像飞龙这样做
min-height: 1400px;/* for ie7 firefox opera*/
max-height:none;/* for ie7 firefox opera*/
_height: 1400px;/* only for ie6*/

<span id="more-421"></span>

3. div宽度不兼容:
如果div容器设定float 浮动但没设定宽度,那么也会出现ie6和firefox的不兼容。firefox下内容会撑开容器渗入它前面的div,ie6下该div内容折行而不是我们想象的与同级div在同一行。

div宽度不兼容解决方案:浮动div容器一般需定义width。

4. div浮动不兼容:飞龙发现当前面div有左浮动和右浮动,下面div就会受他们影响也有浮动。ie也许不用加清除,但firefox下不清除浮动是不行的。
div浮动不兼容解决方案:给下面的div设定清除 clear:both ;

5. 最被痛恨的double-margin不兼容。ie6下给浮动容器定义margin-left 或者margin-right 实际效果是数值的2倍。
解决方案,给浮动容器定义display:inline

6. mirror margin不兼容。当外层元素内有float元素时,外层元素如定义margin-top:14px,将自动生成margin- bottom:14px.padding也会出现类似问题,都是ie6下的特产,该类bug 出现的情况较为复杂,远不只这一种出现条件,还没系统整理。引申:ff 和ie 下对容器的margin-bottompadding-bottom 的解释有时不一致,似乎与之相关。
解决方案:外层元素设定border 或设定float。

7. 吞吃现象。还是ie6,上下两个div,上面div设置背景,却发现下面没有设置背景的div 也有了背景,这就是吞吃现象。对应上面的背景吞吃现象,还有滚动下边框缺失的现象。飞龙没明白这啥意思。
解决方案:使用zoom:1.这个zoom好象是专门为解决ie6 bug而生的。

8. 注释也能产生bug。多出来的一只猪,这是前人总结这个bug使用的比喻。ie6下这个bug,大家会在页面看到猪字出现两遍,重复内容量因注释的多少而 变。解决方案:用”<!-[if !IE]> picRotate start <![endif]->”方法写注释。

9. <li/>里加 float <div/> 。这是一个典型的,棘手的兼容问题,希望引起大家重视。,给li不同的属性会有不同的解释效果,ff下的解释稍可理解,ie6下的解释会让你摸不着头脑。 在《ul使用心得》一文里有相关成果,却没给出问题解决过程。

10. 使用了”float:left;display:inline”的ul的奇怪表现。可以看出这句css是针对ie6下的double margin bug 而加上的display:inline,这也是我的css体系里的重要一环,在《ul使用心得》一文中有相关阐述。而这句css用在ul上会让你痛苦不 堪。

11. img下的留白,大家看这段代码有啥问题:
<div>
<img src=”" mce_src=”" />
</div>

把div的border打开,你发现图片底部不是紧贴着容器底部的,是img后面的空白字符造成,要消除必须这样写
<div>
<img src=”" mce_src=”" /></div>
后面两个标签要紧挨着.ie7下这个bug 依然存在。解决方案:给img设定 display:block

12. 失去line-height。<div style=”line-height:20px”><img />文字</div>,很遗憾,在ie6下单行文字 line-height 效果消失了,原因是<img />这个inline-block元素和inline元素写在一起了。解决方案:让img 和文字都 float起来。

引申:大家知道img 的align 有 text-top,middle,absmiddle啊什么的,你可以尝试去调整img 和文字让他们在ie和ff下能一致,你会发现怎么调都不会让你满意。索性让img 和文字都 float起来,用margin 调整。

13. 链接的hover状态.a:hover img{width:300px} 我们想让鼠标hover 时,链接里包含图片宽度变化,可惜在ie6下无效,ie7、ff下有效。

14. 非链接的hover状态.div:hover{} 这样的样式ie6是不认的,在ie7、ff下才有效果。

15. block化的a链接,其内套absolute层 ,absolute层内放置img,ie下,鼠标点击img不会有链接效果,firefox、opera下正常。

上面的诸多问题如果你掌握了其中奥妙,90%的不兼容问题不需要另起css hack的。

16. 无法彻底清除的float。如果让ul下的li具有了float属性,如何clear浮动的li呢?<ul><li class=”c”></li></ul> 或者 <ul><li><div class=”c”></div></li></ul> 或者 <ul><li></li><div>class=”c”></div></ul> 或者 <ul><li></li></ul><div>class=”c”></div> 或者上述的组合?这个问题,我无法给出解答。

下面有个例子与此相关
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd >

<style type=text/css>
.c{clear:both;overflow:hidden;+overflow:visible}
.bd{border:1px solid red}

ul.ex{list-style:none;}
ul.ex li{float:left;border:1px solid green;}
</style>
<ul class=ex>
<li>sfsdfsfdf</li>
<li>sfsdfsfdf</li>
</ul>
<div class=c></div>
<div class=bd style=margin-top:19px>sfsdfsfdf</div>

请在ie下 测试,仅仅将 margin-top:19px 改为margin-top:20px 你发现什么了?要素:doctype必须有,ie6、ie7下margin-top:19px还好好的,margin-top:20px 就出问题了,无法解释…大家还可以将 clear 层换不同的位置测试。

解决方案:给ul 属性zoom:1 (给li 加zoom:1 没用)

引申:clear层应该单独使用。也许你为了节省代码把clear属性直接放到下面的一个内容层,这样有问题,不仅仅是ff和opera下失去margin效果,ie下某些margin值也会失效

<div style=”background:red;float:left;”>dd</div>
<div style=”clear:both;margin-top:18px;background:green”>ff</div>

17. ie下overflow:hidden对其下的绝对层position:absolute或者相对层position:relative无效。
解决方案:给overflow:hidden加position:relative或者position:absolute。另,ie6支持overflow-x或者overflow-y的特性,ie7、ff不支持。

18. ie6下严重的bug,float元素如没定义宽度,内部如有div定义了height或zoom:1,这个div就会占满一整行,即使你给了宽度.float元素如果作为布局用或复杂的容器,都要给个宽度的。

19. ie6下的bug,绝对定位的div下包含相对定位的div,如果给内层相对定位的div高度height具体值,内层相对层将具有100%的width值,外层绝对层将被撑大。解决方案给内层相对层float属性。

20. ie6下的bug,<head></head>内有<base target=”_blank”/>的情况下,position:relative层下的float层内文字无法选中。这个bug迫使我修公用样式库。

21. 终于来了个firefox缺点 width:100%这个东西在ie里用很方便,会向上逐层搜索width值,忽视浮动层的影响,ff下搜索至浮动层结束,如此只能给中间的所有浮动层加width:100%才行,累啊.opera这点倒学乖了跟了ie。

22. Padding vs. Margin
对于浏览器来说,Margin 是兼容性最差的一个属性。因此只要条件允许,尽可能的使用Padding属性

分享到:
评论

相关推荐

    IE与FF的兼容问题

    ### IE与FF的兼容问题 #### CSS篇 在网页开发过程中,不同的浏览器对CSS的支持程度不一,导致了诸多兼容性问题。以下列举了一些IE(Internet Explorer)与Firefox(火狐浏览器)之间的常见CSS兼容性差异及其解决...

    IE与FF脚本兼容性问题

    本文列举了IE与FF在脚本执行时的常见兼容性问题,并提供了相应的解决方案。通过上述方法,可以确保Web应用程序能够在不同的浏览器环境中稳定运行。同时,建议开发者在开发过程中遵循良好的编码习惯,避免使用特定...

    FF和IE兼容性问题

    本文将深入探讨FF和IE之间的CSS兼容性问题,以及如何解决这些差异。 首先,让我们来看标题和描述中提到的问题:如何使`DIV`或`table`在IE和Firefox中水平居中。在CSS中,有多种方法可以实现这个效果,但并非所有...

    FF和IE的兼容性问题总结

    FF和IE的兼容性问题一直是前端开发者面临的重要挑战。这些浏览器在处理JavaScript、DOM操作以及事件处理等方面的差异,可能导致代码在不同浏览器上表现不一致。以下是对这些兼容性问题的详细解析和解决策略: 1. **...

    IE/FF兼容问题

    标题中的“IE/FF兼容问题”...总的来说,解决IE/FF兼容问题需要对JavaScript、CSS、DOM有深入理解,并熟悉各种兼容性技巧和工具。通过学习提供的资源,开发者可以更好地应对这些问题,确保代码在多种浏览器下表现一致。

    IE与FF的CSS兼容问题大集合

    ### IE与FF的CSS兼容问题大集合 在前端开发中,不同浏览器对于CSS的支持程度不同,这往往会导致页面在不同的浏览器下显示效果不一致。本文将详细介绍Internet Explorer(IE)和Firefox(FF)两种浏览器之间常见的...

    IE和FF兼容问题

    ### IE和FF兼容问题详解 #### 一、引言 随着互联网技术的不断发展与普及,网页设计者们面临着越来越复杂的浏览器兼容性挑战。在众多浏览器中,Internet Explorer(简称IE)与Firefox因其庞大的用户基数而成为了...

    ie6 ie7 ff浏览器兼容

    ### 浏览器兼容性问题解析:针对IE6、IE7与Firefox的样式处理 在Web开发中,浏览器兼容性始终是一项重要的考虑因素。不同浏览器对CSS的支持程度不一,尤其是对于早期版本的Internet Explorer(IE)如IE6、IE7,以及...

    IE6,IE7,FF等浏览器不兼容原因及解决办法

    在网页开发过程中,浏览器兼容性问题常常困扰着开发者,尤其是IE6、IE7以及Firefox(FF)等浏览器之间存在的差异。这些差异主要源于各浏览器对Web标准的不同理解和实现,导致CSS样式、JavaScript语法以及DOM...

    ie和ff兼容性大集合

    ### IE和FF兼容性大集合 随着互联网技术的迅速发展,各式各的浏览器层出不穷,而浏览器之间的兼容性问题成为开发者必须面对的一个挑战。本文将基于实际经验与网络资源,总结Internet Explorer (IE) 和 Firefox (FF)...

    JS在IE和FF中的兼容性问题

    JavaScript(简称JS)是一种广泛应用于Web开发的脚本语言,它在不同的浏览器中可能存在兼容性问题,特别是Internet Explorer(IE)和Firefox(FF)之间。这两个浏览器对JS的实现方式有所不同,导致某些特性或功能在...

    CSS完美兼容IE6IE7FF的通用方法

    ### CSS完美兼容IE6、IE7与Firefox的通用方法详解 在Web开发的历史长河中,浏览器兼容性一直是开发者面临的重大挑战,尤其是处理早期版本的Internet Explorer(IE6和IE7)与现代浏览器如Firefox之间的差异。本文将...

    div错位解决IE6IE7IE8样式不兼容问题

    通过以上介绍的方法,我们可以有效地解决IE6/IE7/IE8中的样式不兼容问题,提高网页的跨浏览器兼容性。需要注意的是,在实际开发过程中,还需要根据具体的项目需求和目标用户群体来决定是否需要兼容这些老旧的浏览器...

    Ie ff ja兼容

    也许大家为IE 和火狐因为Js的兼容问题而头痛,下面是一些解决兼容的代码,有兴趣的看下

    CSS完美兼容IE6_IE7_FF的通用方法

    ### CSS完美兼容IE6_IE7_FF的通用方法 在网页设计与开发过程中,浏览器兼容性问题一直是前端开发者面临的重要挑战之一。特别是在早期的Web开发中,如何让网站同时兼容Internet Explorer 6(简称IE6)、Internet ...

    jsencrypt.js 兼容IE,Chrome,FF

    jsencrypt 兼容IE8,Chrome,FF,包括exports.default,Object.defineProperty不兼容问题处理等。

Global site tag (gtag.js) - Google Analytics