`

浏览器兼容问题

阅读更多
http://www.1987y.org/archives/229
====================================================

浏览器兼容问题一直困扰着很多WEB设计师,当然有时也困扰着我.它如附骨之蛆一般让人讨厌,在此我向各浏览器开发商表达一下问候.

有了问题自然要解决,在学习及应用WEB标准的过程我一直都在思考这些问题,解决这些问题.到后来问题越来越少了,已经很少遇到兼容问题了.

为什么会这样,是我写代码的经验越来越丰富了?还是浏览器升级得越来越标准了?还是我变成高手了?或者我人品越来越好了?

我觉得除了最后一点有可能之外,其他的都不是主要的原因.因为大家都要努力提高自己的人品.(别呸!)


扯远了,自我检查了一下,我发现最主要的原因是我学会 布局 和 分析 了.

布局(设计师)

作为设计师,在作效果图的时候就已经在考虑页面上的DIV构架和JS的效果了.不会去追求花里胡哨的东东了,以简单为美,以横平竖直为主,有效果也是放在广告图上来出现的.效果图的分块的宽度已经基本固定在某个范围内了,而且我发现越到后来作的东西跟当初作设计的初衷越远了.设计站上的收录的漂亮站点也开始有点不喜欢了.

分析(前端)

作为前端开发,在看到别人的效果图的时候,心里首先要想到的是怎么把这张页面拆了.切图就像建房子,我现在已经习惯把网页用手先分成一块一块的.最后只有“上(中)下”、“左(中)右”的结构了。我不用HACK,不用important,不用filter,基本不用position,以前经常用的东西都逐渐舍弃掉了。返璞归真了。

最基本的布局反而最容易达到标准,为了实现而实现反而会需要很多HACK,或者针对不同的浏览器来写,这样代码量不但没有缩小反而有增加。


---我的习惯(经验)---

1.DIV布局的时候模块化.保证每一块代码独立出来都是平整的.在DW里用设计视图看的时候也是工整的,没有形变,没有长短不齐.
2.左(中)右结构的处理方法.我用float,如left,right,clear.从来都直接清除。
3.上(中)下结构的处理方法.我就用id-top、id-body、id-bottom,id-body中间放一个id-con,里面的东西就用class.如:.id-con , .id-list, .id-img , .id-text等等.
4.全局需要定义的CSS,这个网上很多。我不多说了,我还喜欢定义一个字体颜色专用的css段.比如中国红,银灰,支付宝橙(希望你们能听懂)等等。
5.还有常用的东西,比如说:下划线|  .bdrla, .bdrlb,分别定义border-bottom为实线或者虚线。颜色默认用灰色。依此类推。
......
逐渐形成一种书写习惯,形成一种框架,作起事情来不断没有遇到兼容问题,而且效率很高。

可能有人会说,你的这种习惯能解决一些刁钻古怪的问题么?当然可以。因为你只有效率比别人高,解决普通的问题的时间才会比别人短,这样就有时间来研究特殊的应用。如果连基本的问题都没有搞通搞懂,就在研究一些困难的问题,那么就算解决了这些问题,你自己觉得你就是高手了么?
人说网页设计师就像戴着枷锁跳舞的舞者.戴着枷锁跳舞的时候,你首先得把体力锻炼得能扛得住这个枷锁,然后才能去研究怎么跳出优美的舞步。而我现在已经在尝试用优美的舞姿征服别人了。你呢?






===========================

DIV+CSS开发浏览器的兼容性
1. 文字本身的大小不兼容。同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff 下实际占高17px,上留白1px,下留白3px,opera下就更不一样了。解决方案:给文字设定 line-height 。确保所有文字都有默认的 line-height 值。这点很重要,在高度上我们不能容忍1px 的差异。

2.ff下容器高度限定,即容器定义了height之后,容器边框的外形就确定了,不会被内容撑大,而ie下是会被内容撑大,高度限定失效。所以不要轻易给容器定义height。

3.横向上的撑破容器问题,。如果float 容器未定义宽度,ff下内容会尽可能撑开容器宽度,ie下则会优先考虑内容折行。故,内容可能撑破的浮动容器需要定义width。

小实验:有兴趣大家可以看看这段实验。在不同浏览器下分别测试以下各项代码。

a.<div style=”border:1px solid red;height:10px”></div> b. <div style=”border:1px solid red;width:10px”></div>

c. <div style=”border:1px solid red;float:left”></div> d. <div style=”border:1px solid red;overflow:hidden”></div>

上面的代码在不同浏览器中是不一样的,实验起源于对小height 值div 的运用,<div style=”height:10px;overflow:hidden”></div>,小height 值要配合overflow:hidden一起使用。实验好玩而已,想说明的是,浏览器对容器的边界解释是大不相同的,容器内容的影响结果各不相同。


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

5.mirror margin bug,当外层元素内有float元素时,外层元素如定义margin-top:14px,将自动生成margin-bottom:14px。 padding也会出现类似问题,都是ie6下的特产,该类bug 出现的情况较为复杂,远不只这一种出现条件,还没系统整理。解决方案:外层元素设定border 或 设定float。

引申:ff 和ie 下对容器的margin-bottom,padding-bottom的解释有时不一致,似乎与之相关。

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

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


8.img 下的留白,大家看这段代码有啥问题:

<div>
<img src=”" mce_src=”" />
</div>

把div的border打开,你发现图片底部不是紧贴着容器底部的,是img后面的空白字符造成,要消除必须这样写

<div>
<img src=”" mce_src=”" /></div>

后面两个标签要紧挨着。ie7下这个bug 依然存在。解决方案:给img设定 display:block。

9. 失去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 调整。


10.clear层应该单独使用。也许你为了节省代码把clear属性直接放到下面的一个内容层,这样有问题,不仅仅是ff和op下失去margin效果,ie下某些margin值也会失效
<div style=”background:red;float:left;”>dd</div>
<div style=”clear:both;margin-top:18px;background:green”>ff</div>

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

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

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

14.width:100%这个东西在ie里用很方便,会向上逐层搜索width值,忽视浮动层的影响,ff下搜索至浮动层结束,如此,只能给中间的所有浮动层加width:100%才行,累啊。opera这点倒学乖了跟了ie。
15,有时候加上div{overflow:hidden}这个样式那三个浏览器就会相同了
http://user.qzone.qq.com/393107304   在这个空间的留言板里也述说了关于这个问题的相关方面
分享到:
评论

相关推荐

    常见浏览器兼容问题

    ### 常见浏览器兼容问题 在Web开发中,浏览器兼容性问题一直是开发者们需要面对的重要挑战之一。不同浏览器对CSS、HTML等标准的支持程度不一,常常导致页面在不同浏览器下显示效果各异。本文将根据提供的部分描述,...

    css浏览器兼容问题大全

    【CSS浏览器兼容问题详解】 在Web开发中,CSS(层叠样式表)是用于控制网页元素样式的关键技术,但它在不同浏览器之间的兼容性问题一直是开发者面临的挑战。尤其是针对老版本的Internet Explorer(如IE7、IE6)和...

    IE6浏览器兼容问题总结及CSS排版注意地方

    IE6浏览器兼容问题总结及CSS排版注意地方 列举IE6中10个不得不注意的问题 重构你的代码

    浏览器兼容问题处理

    在前端开发中,浏览器兼容问题一直是开发者面临的一大挑战。不同的浏览器对某些JavaScript语法、DOM操作以及CSS样式的支持程度不尽相同,这导致了在不同浏览器下可能出现功能差异或者页面渲染问题。以下是一些常见的...

    浏览器兼容问题.ppt

    浏览器兼容问题.ppt

    js浏览器兼容问题的大全

    "js浏览器兼容问题的大全"这个主题涵盖了如何处理这些挑战的关键知识点。 首先,JavaScript的兼容性问题主要涉及IE(Internet Explorer)、Firefox(Firefox)、Chrome、Safari和Opera等主流浏览器之间的差异。例如...

    css和js的浏览器兼容问题汇总

    总的来说,解决CSS和JavaScript的浏览器兼容问题需要开发者对各种浏览器的特性有深入理解,并善于运用工具和技巧进行调试和优化。如使用Firebug、Web Developer、DebugBar等开发工具可以帮助开发者快速定位和解决...

    关于各种浏览器兼容问题,希望对大家有些帮助

    本文将针对标题和描述中提及的“浏览器兼容问题”进行详尽的探讨。 浏览器兼容性问题主要体现在以下几个方面: 1. **渲染引擎差异**:不同的浏览器采用不同的渲染引擎,如Chrome使用Blink,Firefox使用Gecko,...

    最全前端面试题-2.2(浏览器兼容问题篇-上百篇题集整理1个月).doc

    【前端浏览器兼容问题详解】 前端开发中,浏览器兼容性是一个重要的考量因素,特别是对于历史悠久的Internet Explorer(IE)浏览器,其各个版本之间的差异性给开发者带来了不少挑战。以下是一些常见的浏览器兼容性...

    CSS浏览器兼容问题

    ### CSS浏览器兼容问题详解 #### 一、引言 在Web开发过程中,浏览器兼容性问题一直是前端工程师关注的重点。不同的浏览器对于CSS的支持程度各不相同,导致同样的代码在不同的浏览器中可能呈现出不同的效果。本文将...

    css浏览器兼容问题

    ### CSS浏览器兼容问题详解 #### 一、引言 随着Web技术的发展,不同的浏览器对于CSS的支持程度也有所不同,这导致了在开发过程中经常会遇到浏览器之间的兼容性问题。本文旨在总结和分享一系列关于CSS兼容性的技巧...

    解决浏览器兼容问题的CSS语法技巧大全.doc

    解决浏览器兼容问题的 CSS 语法技巧大全 CSS 兼容性问题是 web 开发中常见的问题之一,如何解决浏览器之间的兼容性问题是每个 web 开发者都需要面临的问题。下面是解决浏览器兼容问题的 CSS 语法技巧大全,涵盖了 ...

    浏览器兼容问题汇总

    ### 浏览器兼容问题汇总:深入解析与解决方案 在前端开发中,浏览器兼容性问题一直是困扰开发者的一大难题。不同的浏览器对CSS的支持程度不一,尤其是对于老旧版本的Internet Explorer(如IE6、IE7)、Firefox等,...

    通杀所有浏览器兼容问题

    本文将根据提供的文件信息,深入探讨和总结“通杀所有浏览器兼容问题”的关键知识点,主要围绕div、css以及浏览器兼容性的常见问题与解决方案展开。 ### 一、基础知识重置 #### 1. CSS Reset 为了解决浏览器默认...

    最全的CSS浏览器兼容问题

    【CSS浏览器兼容问题详解】 在Web开发中,CSS(层叠样式表)是用于控制网页元素样式的关键技术,但它在不同浏览器之间的兼容性问题一直是开发者头疼的问题。尤其是Internet Explorer(IE)的早期版本,如IE7和IE6,...

    css浏览器兼容问题全面汇总

    然而,不同的浏览器对于CSS的支持程度和解析方式可能存在差异,这就导致了所谓的“浏览器兼容问题”。本篇文章将全面汇总CSS在各主流浏览器中的兼容性问题,并提供解决方案,帮助开发者有效地处理这些头疼的问题。 ...

    CSS代码解决浏览器兼容问题

    本文将深入探讨如何使用CSS来解决浏览器兼容问题。 首先,我们来看一个关键的CSS技巧:`!important`。`!important`是CSS1规范中的一个特性,其目的是提升样式规则的优先级。当一个CSS规则后面跟上了`!important`,...

    常见浏览器兼容问题处理办法.docx

    本文将针对常见的浏览器兼容问题提供处理办法。 1. **浏览器模式设置**: 通过`&lt;meta&gt;`标签可以指定浏览器以特定的IE版本模式进行渲染,例如`&lt;meta http-equiv="X-UA-Compatible" content="IE=8"&gt;`会让页面以IE8...

Global site tag (gtag.js) - Google Analytics