简单实用的不同版本ie浏览器兼容问题.docx

上传人:b****3 文档编号:26649474 上传时间:2023-06-21 格式:DOCX 页数:12 大小:24.13KB
下载 相关 举报
简单实用的不同版本ie浏览器兼容问题.docx_第1页
第1页 / 共12页
简单实用的不同版本ie浏览器兼容问题.docx_第2页
第2页 / 共12页
简单实用的不同版本ie浏览器兼容问题.docx_第3页
第3页 / 共12页
简单实用的不同版本ie浏览器兼容问题.docx_第4页
第4页 / 共12页
简单实用的不同版本ie浏览器兼容问题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

简单实用的不同版本ie浏览器兼容问题.docx

《简单实用的不同版本ie浏览器兼容问题.docx》由会员分享,可在线阅读,更多相关《简单实用的不同版本ie浏览器兼容问题.docx(12页珍藏版)》请在冰豆网上搜索。

简单实用的不同版本ie浏览器兼容问题.docx

简单实用的不同版本ie浏览器兼容问题

不同版本的IE的内核是不同的,对于前台网页代码的兼容性也有很大

的差异行,比较明显的IE6和IE8在div标签上的使用有这很大的差异,

在IE6中div是有默认的行高的,即使你给它设定的height为固定的值

看,但是真正显示的时候,效果和你理想中的效果还是有很大的差异

,甚至界面完全无法看。

在网上有很多的不同ie阅读器的兼容问题的文档说明,根本都是css

式样的区别说明和解决方法,但是,我在这里想说的是我们开发一个

工程要针对的是群众的阅读器,是所有的内容都要兼容,不是某一个

css兼容了就可以了,如何才能使你的工程有像XX那样的兼容性呢?

这里我给大家一个方法,虽然没有IE的那么简单,但是这个却容易

理解,适用于初学者:

首先我们要做的就是判断IE阅读器的版本〔也就是内核〕,

functioncheckBrowser(){

varbrowser=navigator.appName;

varb_version=navigator.appVersion;

varversion=b_version.split(";");

vartrim_Version=version[1].replace(/[

]/g,"");

if(browser=="MicrosoftInternetExplorer"&&

trim_Version=="MSIE6.0")

{

alert("6.0");

}

elseif(browser=="MicrosoftInternet

Explorer"&&trim_Version=="MSIE7.0")

{

alert("7.0");

}

elseif(browser=="MicrosoftInternet

Explorer"&&trim_Version=="MSIE8.0")

{

alert("8.0");

}

elseif(browser=="MicrosoftInternet

Explorer"&&trim_Version=="MSIE9.0")

{

alert("9.0");

}

}

这个就是判断你所使用的IE是哪个版本的,接下来要做的就是针对不同的版本的阅读器写不同的前台代码了。

以下是不同版本IE的css式样兼容问题的说明,大家可以参考这以下内容进展编写代码:

DIV+CSS相对IE6、IE7和IE8的兼容问题:

针对div的默认高度问题如下代码可以解决:

font-size:

0;〔因为div有默认字体高度〕

针对div中的table显示滚动条:

给div加:

display:

block;overflow-x:

auto;overflow-y:

auto;height:

--px;(其中x轴和Y轴的滚动条的显示通过overflow来调节,大家可以酌情而定)

3C的标准,一定要加DOCTYPE声名.

CSS技巧:

1.div的垂直居中问题

vertical-align:

middle;将行距增加到和整个DIV一样高line-height:

200px;然后插入文字,就垂直居中了。

缺点是要控制内容不要换行

2.margin加倍的问题

设置为float的div在ie下设置的margin会加倍。

这是一个ie6都存在的bug。

解决方案是在这个div里面加上display:

inline;

例如:

<#divid=〞imfloat〞>相应的css为#IamFloat{float:

left;margin:

5px;/*IE下理解为10px*/display:

inline;/*IE下再理解为5px*/}

3.浮动ie产生的双倍间隔

#box{float:

left;width:

100px;margin:

000100px;//这种情况之下IE会产生200px的间隔display:

inline;//使浮动忽略}

这里细说一下block与inline两个元素:

block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);#box{display:

block;//可以为内嵌元素模拟为块元素display:

inline;//实现同一行排列的效果diplay:

table;

4IE与宽度和高度的问题

IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。

这样问题就大了,假设只用宽度和高度,正常的阅读器里这两个值就不会变,

假设只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。

比方要设置背景图片,这个宽度是比较重要的。

要解决这个问题,

可以这样:

#box{width:

80px;height:

35px;}html>body#box{width:

auto;height:

auto;min-width:

80px;min-height:

35px;}

min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。

但IE不认得这个,而它实际上把width当做最小宽度来使。

为了让这一命令在IE上也能用,可以把一个

放到标签下,然后为div指定一个类,然后CSS这样设计:

但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。

它实际上通过Javascript的判断来实现最小宽度。

左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.

#box{float:

left;width:

800px;border:

1pxsolid#E00;}

#left{float:

left;width:

50%;border:

1pxsolid#E00;}

#right{width:

50%;border:

1pxsolid#E00;}

*html#left{margin-right:

-3px;//这句是关键}

当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。

有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。

解决方法:

对#layout使用line-height属性或者给#layout使用固定高和宽。

页面构造尽量简单。

8.float的div闭合;去除浮动;自适应高度;

①例如:

<#divid=〞floatA〞><#divid=〞floatB〞><#divid="NOTfloatC">这里的NOTfloatC并不希望继续平移,而是希望往下排。

(其中floatA、floatB的属性已经设置为float:

left;)这段代码在IE中毫无问题,问题出在FF。

原因是NOTfloatC并非float标签,必须将float标签闭合。

在<#divclass=〞floatB〞><#divclass=〞NOTfloatC〞>之间加上<#divclass=〞clear〞>这个div一定要注意位置,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,

否那么会产生异常。

并且将clear这种款式定义为为如下即可:

.clear{clear:

both;}

②作为外部wrapper的div不要定死高度,为了让高度能自动适应,要在wrapper里面加上overflow:

hidden;当包含float的box的时候,高度自动适应在IE下无效,

这时候应该触发IE的layout私有属性(万恶的IE啊!

)用zoom:

1;可以做到,这样就到达了兼容.

例如某一个wrapper如下定义:

.colwrapper{overflow:

hidden;zoom:

1;margin:

5pxauto;}

③对于排版,我们用得最多的css描绘可能就是float:

left.有的时候我们需要在n栏的floatdiv后面做一个统一的背景,譬如:

比方我们要将page的背景设置成蓝色,以到达所有三栏的背景颜色是蓝色的目的,但是我们会发现随着leftcenterright的向下

拉长,而page居然保存高度不变,问题来了,原因在于page不是float属性,而我们的page由于要居中,不能设置成float,所以我们应该这样解决

left;width:

100%〞>

再嵌入一个floatleft而宽度是100%的DIV解决之

④万能float闭合(非常重要!

)关于clearfloat的原理可参见[HowToClearFloatsWithoutStructuralMarkup],将以下代码参加GlobalCSS中,给需要闭合的div加上

class="clearfix"即可,屡试不爽./*ClearFix*/

.clearfix:

after{content:

".";display:

block;height:

0;clear:

both;visibility:

hidden;}

.clearfix{display:

inline-block;}/*HidefromIEMac*/

.clearfix{display:

block;}/*EndhidefromIEMac*//*endofclearfix*/

或者这样设置:

.hackbox{display:

table;//将对象作为块元素级的表格显示}

高度不适应是当内层对象的高度发生变化时外层高度不能自动进展调节,特别是当内层对象使用margin或paddign时。

例:

#box{background-color:

#eee;}#boxp{margin-top:

20px;margin-bottom:

20px;text-align:

center;}

p对象中的内容

解决方法:

在P对象上下各加2个空的div对象CSS代码:

.1{height:

0px;overflow:

hidden;}或者为DIV加上border属性。

12.IE6下为什么图片下有空隙产生

解决这个BUG的方法也有很多,可以是改变html的排版,或者设置img为display:

block或者设置vertical-align属性为vertical-align:

top|bottom|middle|text-bottom都可以解决.

加上vertical-align:

middle;

--input{width:

200px;height:

30px;border:

1pxsolidred;vertical-align:

middle;}-->

一.web标准中是不容许重复ID的,比方divid="aa"不容许重复2次,而class定义的是类,理论上可以无限重复,这样需要屡次引用的定义便可以使用他.

二.属性的优先级问题ID的优先级要高于class,看上面的例子

三.方便JS等客户端脚本,假设在页面中要对某个对象进展脚本操作,那么可以给他定义一个ID,否那么只能利用遍历页面元素加上指定特定属性来找到它,这是相对浪费时间资源,

远远不如一个ID来得简单.

15.LI中内容超过长度后以省略号显示的方法

此方法适用与IE与OP阅读器

--li{width:

200px;white-space:

nowrap;text-overflow:

ellipsis;-o-text-overflow:

ellipsis;overflow:

hidden;}-->

解决方法是将body换成html

DOCTYPEhtmlPUBLIC"-//W3C1/DTD/xhtml1-strict.dtd">

--html{scrollbar-face-color:

#f6f6f6;scrollbar-highlight-color:

#fff;scrollbar-shadow-color:

#eeeeee;scrollbar-3dlight-color:

#eeeeee;scrollbar-arrow-

color:

#000;scrollbar-track-color:

#fff;scrollbar-darkshadow-color:

#fff;}-->

17.为什么无法定义1px左右高度的容器I

E6下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:

overflow:

hidden|zoom:

0.08|line-height:

1px

18.怎么样才能让层显示在FLASH之上呢

解决的方法是给FLASH设置透明

19.怎样使一个层垂直居中于阅读器中

这里我们使用百分比绝对定位,与外补丁负值的方法,负值的大小为其自身宽度高度除以二

--div{position:

absolute;top:

50%;lef:

50%;margin:

-100px00-100px;width:

200px;height:

200px;border:

1pxsolidred;}

-->

FF与IE

1.Div居中问题

div设置margin-left,margin-right为auto时已经居中,IE不行,IE需要设定body居中,首先在父级元素定义text-algin:

center;这个的意思就是在父级元素内的内容居中。

2.链接(a标签)的边框与背景

a链接加边框和背风光,需设置display:

block,同时设置float:

left保证不换行。

参照menubar,给a和menubar设置高度是为了防止底边显示错位,假设不设height,

可以在menubar中插入一个空格。

被点击访问过的超链接款式不在具有hover和active了,很多人应该都遇到过这个问题,解决方法是改变CSS属性的排列顺序:

L-V-H-ACode:

--a:

link{}a:

visited{}a:

hover{}a:

active{}-->

4.游标手指cursor

cursor:

pointer可以同时在IEFF中显示游标手指状,hand仅IE可以

ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值,所以先定义ul{margin:

0;padding:

0;}就能解决大部分问题

6.FORM标签

这个标签在IE中,将会自动margin一些边距,而在FF中margin那么是0,因此,假设想显示一致,所以最好在css中指定margin和padding,针对上面两个问题,我的css中一般首先都使用这样的款式

ul,form{margin:

0;padding:

0;}给定义死了,所以后面就不会为这个头疼了.

7.BOX模型解释不一致问题

在FF和IE中的BOX模型解释不一致导致相差2px解决方法:

div{margin:

30px!

important;margin:

28px;}注意这两个margin的顺序一定不能写反,important这个属性IE不能识别,

但别的阅读器可以识别。

所以在IE下其实解释成这样:

div{maring:

30px;margin:

28px}重复定义的话按照最后一个来执行,所以不可以只写margin:

xxpx!

important;

#box{width:

600px;//forie6.0-w\idth:

500px;//forff+ie6.0}#box{width:

600px!

important//forffwidth:

600px;//forff+ie6.0width/**/:

500px;//forie6.0-}

8.属性选择器(这个不能算是兼容,是隐藏css的一个bug)

如p[id]中,所有p标签中有id的都是同款式的.

9.最狠的手段-!

important;

假设实在没有方法解决一些细节问题,可以用这个方法.FF对于〞!

important〞会自动优先解析,然而IE那么会忽略.

如下.tabd1{background:

url(/res/images/up/tab1.gif)no-repeat0px0px!

important;/*StyleforFF*/

background:

url(/res/images/up/tab1.gif)no-repeat1px0px;/*StyleforIE*/}值得注意的是,一定要将xxxx!

important这句放置在另一句之上,上面已经提过

10.IE,FF的默认值问题

或许你一直在抱怨为什么要专门为IE和FF写不同的CSS,为什么IE这样让人头疼,然后一边写css,一边咒骂那个可恶的M$IE.其实对于css的标准支持方面,IE并没有我们想象的那么可

恶,关键在于IE和FF的默认值不一样而已,掌握了这个技巧,你会发现写出兼容FF和IE的css并不是那么困难,或许对于简单的css,你完全可以不用〞!

important〞这个东西了。

我们都知

道,阅读器在显示网页的时候,都会根据网页的css款式表来决定如何显示,但是我们在款式表中未必会将所有的元素都进展了详细的描绘,当然也没有必要那么做,所以对于那些没有描绘的

属性,阅读器将采用内置默认的方式来进展显示,譬如文字,假设你没有在css中指定颜色,那么阅读器将采用黑色或者系统颜色来显示,div或者其他元素的背景,假设在css中没有被指定,

阅读器那么将其设置为白色或者透明,等等其他未定义的款式均如此。

所以有很多东西出现FF和IE显示不一样的根本原因在于它们的默认显示不一样,而这个默认款式该如何显示我知道在w3中

有没有对应的标准来进展规定,因此对于这点也就别去怪罪IE了。

标准阅读器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢?

方法就是去掉height设置min-height:

200px;

这里为了照顾不认识min-height的IE6可以这样定义:

{height:

auto!

important;height:

200px;min-height:

200px;}

众所周知IE中直接使用word-wrap:

break-word就可以了,FF中我们使用JS插入的方法来解决

--div{width:

100px;

word-wrap:

break-word;border:

1pxsolidred;}-->aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

/*

[CDATA[*/

functiontoBreakWord(el,intLen){varōbj=document.getElementById(el);varstrContent=obj.innerHTML;varstrTemp="";

while(strContent.length>intLen){strTemp+=strContent.substr(0,intLen)+"";strContent=strContent.substr(intLen,strContent.length);}

strTemp+=""+strContent;obj.innerHTML=strTemp;}if(document.getElementById&&!

document.all)toBreakWord("ff",37);/*]]>*/

13.为什么IE6下容器的宽度和FF解释不同呢

xmlversion="1.0"encoding="gb2312"?

>

DOCTYPEhtmlPUBLIC"-//W3C

--div{cursor:

pointer;width:

200px;height:

200px;border:

10pxsolidred}-->

让FireFox与IE兼容问题的差异在于容器的整体宽度有没有将边框〔border〕的宽度算在其内,这里IE6解释为200PX,

而FF那么解释为220PX,那终究是怎么导致的问题呢?

大家把容器顶部的xml去掉就会发现原来问题出在这,顶部的申明触发了IE的qurksmode,关于qurksmode、standardsmode的相关

IE6,IE7,FFIE7.0出来了,对CSS的支持又有新问题。

阅读器多了,网页兼容性更差了,疲于奔命的还是我们,为解决IE7.0的兼容问题,找来了下面这篇文章:

如今我大部分都是用!

important来hack,对于ie6和firefox测试可以正常显示,但是ie7对!

important可以正确解释,会导致页面没按要求显示!

下面是三个阅

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1