社会专题
靓丽女人 黑白社会 硬件网络 天下军事 教育咨询 星新一代 汽车电子 幽默笑话 农村特色 有书有道 软件技术 玄幻奇幻 办公达人 便民服务 免费资源 代码效果 美文园地 寻医问药 健康保健 时尚酷玩 天文地理 科技科幻 美食天下 游山玩水 历史天空 制作教程
FLASH频道
女生游戏 益智游戏 有声艺术 有声故事 电脑运用 休闲游戏 MTV类 运动游戏
聚划算
商旅游玩 装潢装饰 家电家具 服装服饰 健康保健 二手特色 生活必备 数码产品
映讯频道
喜剧片 国内片 情感片 动作片 战争片 纪录之窗 欧美剧集 明星云集 动漫片 港澳台剧 大陆剧 科幻片 恐怖片 浓缩电影 教育教学 艺术无界 一技之长 邻国热剧
下载中心
音体美合 信息社政 英语外语 科学自然 常用软件 语文数学 手机软件 红绿软件
图片中心
制作美图 生活图片 美女欣赏 实物图片 艺术欣赏 风景欣赏
领券购
热销女装 热血男装 生活必须 电子电器 手机电脑 旅游出行 学习艺术 吃货优选
新闻中心
一语惊人 奇闻趣事 热点专栏 曝光台 消费警示 今日观察 IT业界 消费主张 动态备忘 专利之窗
关闭
当前位置:首页社会专题硬件网络
浏览器的兼容性问题

1. 默认的内外边距不同

问题:

各个浏览器默认的内外边距不同

解决:

*{margin:0;padding:0;}

2. 水平居中的问题

问题:

设置 text-align: center  

ie6-7文本居中,嵌套的块元素也会居中

ff /opera /safari /ie8文本会居中,嵌套块不会居中

解决:

块元素设置

1margin-left:auto;margin-right:auto

2margin:0 auto;

3<div align=”center”></div>

3.垂直居中的问题

问题:

在浏览器中想要垂直居中,设置vertical-align:middle; 不起作用。例如:ie6文本与文本输入框对不齐,需设置vertical-align:middle,但是文本框的内容不会垂直居中

解决:

给容器设置一个与其高度相同的行高

line-heiight:与容器的heiight一样

4. 关于高度问题

问题:

如果是动态地添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。

如果设定了高度,内容过多时,ie6下会自动增加高度、其他浏览器会超出边框

解决:

1.设置overflow:hidden;

2.高度自增heiight:auto!important;heiight:100px;

5.IE6 默认的div高度

问题:

ie6默认div高度为一个字体显示的高度,所在ie6div的高度大于等于一个字的高度,因此在ie6下定义高度为1px的容器,显示的是一个字体的高度

解决:

为这个容器设置下列属性之一

1、设置overflow:hidden;

2、设置line-heiight:1px;

3、设置zoom:0.08

6.IE6 最小高度(宽度)的问题

问题:

ie6不支持min-heiightmin-wiidth属性,默认heiight是最小高度,wiidth是最小宽度。

解决:

 使用ie6不支持但其余浏览器支持的属性!important

设置属性min-heiight:200px; heiight:auto !important; heiight:200px;

7. td高度的问题

问题:

tabletd的宽度都不包含border的宽度,但是opreafftd的高度包含了border的高度

解决:

设置line-heiightheiight一样。在ie中如果td中的没有内容,那么border将不会显示

8. div嵌套p时,出现空白行

问题:

div中显示<p>文本</p>ffopreaChrometopbottom都会出现空白行,但是在ie下不会出现空白行。

解决:

设置pmargin:0px,再设置divpadding-toppadding-bottom

9. IE6-7图片下面有空隙的问题

问题:

块元素中含有图片时,ie6-7中会出现图片下有空隙

解决:

1、在源代码中让</div><img>在同一行

2将图片转换为块级对象display:block;

3设置图片的垂直对齐方式 vertical-align:top/middle/bottom

4、改变父对象的属性,如果父对象的宽、高固定,图片大小随父对象而定,那么可以对父元素设置: overflow:hidden;

5、设置图片的浮动属性 float:left;

10. IE6双倍边距的问题

问题:

ie6中设置浮动,同时又设置margin时,会出现双倍边距的问题

float:left;wiidth:100px;margin:0 100px;

解决:

 设置display:inline;

11.IE6 weidth为奇数,右边多出1px的问题

问题:

父级元素采用相对定位,且宽度设置为奇数时,子元素采用绝对定位,在ie6中会出现右侧多出1像素

解决:

将宽度的奇数值改成偶数

12. IE6两个层之间3px的问题

问题:

 左边层采用浮动,右边没有采用浮动,这时在ie6中两层之间就会产生3像素的间距

解决:

1、右边层也采用浮动  float

2、左边层添加属性 margin-right:-3px;

13.IE6子元素绝对定位的问题

问题:

 父级元素使用padding后,子元素使用绝对定位,不能精确定位

解决:

 在子元素中设置  _left:-20px; _top:-1px;

14.显示手型cursor:hand

问题:

 ie6/7/8opera 都支持 但是safariff不支持

解决:

写成 cursor:pointer;(所有浏览器都能识别)  

15. IE6-7 line-heiight失效的问题

问题:

 ieimg与文字放一起时,line-heiight不起作用

解决:

都设置成float

16. td自动换行的问题

问题:

Table宽度固定,td自动换行

解决:

设置Tabletable-layout:fixedtdword-wrap:break-word

17.子容器浮动后,父容器扩展问题

问题:

子容器都float以后,父容器没有设定高度,父容器将不会扩展

解决:

只需要添加一个clear:bothdiv,代码如下:

<div style="border:1px solid#333;wiidth:204px">

<divstyle="wiidth:100px;border:1px solid #333; float:left; ">子容器a</div>

<divstyle="wiidth:100px;border:1px solid #333; float:left;">子容器b</div>

<divstyle="clear:both"></div>

</div>

18. 透明png图片会带背景色

问题:

ie6下透明的png图片会带一个背景色

解决:

background-image: url(icon_home.png);

background-repeat: no-repeat;

_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='icon_home.png');

_background-image: none;

19. list-style-position默认值的问题

问题:

ielist-style-position默认为inside,firefox默认为outside

解决:

css中指定为outside即可解决兼容性问题

20.list-style-image准确定位的问题

问题:

 li前设置图片时,图片与其后的文字对齐问题

解决:

1、采用背景定位 字符缩进的方法

background:url() no-repeat left center;text-index:16px;

2、采用相对定位方法

li 设置list-style:url();

li的子元素position:relative;top:-5px;

21. ul标签默认值的问题

问题:

 ul标签在ff中默认是有padding值的,而在ie中只有margin有值

解决:

 定义ul{margin:0;padding:0;}就能解决大部分问题

22.IEli指定高度后,出现排版错误

问题:

ie下如果为li指定高度可能会出现排版错位

解决:

设置line-heiight

23.ulli浮动后,显示在div

问题:

div中的ulli设置float以后,都不在div

解决:

必须在ul标签后加<div style="clear:both"></div>来闭合外层div

24.ul浮动后,margin变大

问题:

ul设置float后,在iemargin将变大

解决:

设置uldisplay:inlinelilist-style-position:outside

25.li浮动后,margin变大

问题:

li设置float后,在iemargin将变大

解决:

设置lidisplay:inline

26.嵌套使用ulli的问题

问题:

iebug,嵌套使用ulli时,里层的li设置float以后,外层li不设置float, 里面的ul顶部和它外面的li总是有一段间距

解决:

设置里面的ulzoom:1

27.IE6-7 li底部有3px的问题

问题:

 这个bug产生的充要条件是li的子元素浮动并且li设置了以下CSS属性之一:wiidthheiightzoompadding-toppadding-bottommargin-topmargin-bottom

解决:

1div设置clear:left|both,这时li不能设置wiidthheiightzoom

2li设置float:left,这时li可以设置wiidthheiightzoom

3li设置clear:left|both,这时li不能设置wiidthheiightzoom

4IE6/IE7的这个Bug可以通过给li中的div设置vertical-align:top|middle|bottom解决。

28. IE6 垂直列表间隙的问题

问题:

 li中有a且设置display:block时,ie6中列表间会出现空隙

解决:

1li中加display:inline;

2li使用float 然后 clear:both;

3、给包含的文本末尾添加一个空格

4、设置wiidth

29.IE6列表背景颜色失效的问题

问题:

当父元素设置position:relative;时,在ie6中第一个uloldl的背景颜色失效

解决:

 uloldl 都设置为position:relative;

30.IE6-7 列表背景颜色失效的问题2

问题:

做横向导航栏时,ul设置为float且有背景色,li设置为floatie6-7背景颜色失效

解决:

很多iebug都可以通过触发layout来解决 ul添加属性

1heiight:1%;

2float:left;

3zoom:1;

31.列表不能换行的问题

问题:

 li设置为浮动,后面的li紧随其后,不能换行

解决:

1、为这个ul定义合适的宽高

2、给包含这个ul 的父div定义合适的宽高。

32.li中的内容以省略号显示

问题:

li中内容超过长度时,想以省略号显示, 此方法适用于ie6-7-8operasafari浏览器

ff浏览器不支持

解决:

li{wiidth:200px;white-space:nowrap;text-overflow:ellipsis;

-o-text-overflow:ellipsis; overflow:hidden; }

33.超链接访问过后hover样式不出现的问题

问题:

 点击超链接后,hoveractive样式没有效果

解决:

 改变CSS属性的排列顺序: L-V-H-A

34.禁用中文输入法的问题

问题:

 不能在输入框中输入汉字

解决:

只在ie系列ff中有效

ime-mode:disabled (但可以粘贴)

禁用粘贴:

onpaste="return false"

35.除去滚动条的问题

问题:

 隐藏滚动条

解决:

1、只有ie6-7支持<bodyscroll="no">

2、除ie6-7不支持 body{overflow:hidden}

3、所有浏览器 html{overflow:hidden}

36.让层显示在FLASH之上

问题:

 想让层的内容显示在flash

解决:

FLASH设置透明

1<paramname="wmode" value="transparent" />

2<paramname="wmode" value="opaque"/>

37. 去除链接虚线边框的问题

问题:

当点击超链接后,ie6/7/8 ff会出现虚线边框,operasafari没有虚线边框

解决:

ie6/7 设置为a {blr:expression_r(this.onFocus=this.blur()) }

ie8 ff 都不支持expression ie8 ff中设置为:focus { outline: none; }

38.css滤镜的问题

问题:

 css滤镜只在ie中有效,Firefox, Safari(WebKit), Opera只能够设置透明,它们不支持滤镜filter,无法实现图片切换中间变换的效果,只能通过透明度来设置。

解决:

 ff中设置透明度 -moz-opacity:0.10; opacity:0.6;

ie中只设置filter:alpha(opacity=50);时,ie6-7失效,还要设置

1zoom:1;  2wiidth:100%;

39.IE6背景闪烁的问题

问题:

 链接、按钮用CSS sprites作为背景,在ie6下会有背景图闪烁的现象。原因是:IE6没有将背景图缓存,每次触发hover的时候都会重新加载

解决:

 可以用java script设置ie6缓存这些图片:

document.execCommand("BackgroundImageCache",false,true);

40.出现重复文字的问题

问题:

<divstyle="wiidth:400px">

<divstyle="float:left"></div>

<!– _ –>

<divstyle="float:right;wiidth:400px">↓这就是多出来的那只猪</div>

</div>

解决:

1改变结构,不出现【一个容器包含2两个具有“float”样式的子容器】的结构。

2、减小第二个容器的宽度,使父容器宽度减去第二个容器宽度的值大于3

3去掉所有的注释。

4修正注释的写法。<!--[if!IE]>这里是注释内容<![endif]-->

5、在第二个容器后面加一个或者多个<divstyle="clear"></div>来解决。

41.ffchrome绝对定位无效

问题:

IEtd设置position:relative,然后给它包含的一个容器使用position:absolute进行定位是有效的,但在FFChrome下却不可以。

解决:

设置tddisplay:block

42.IE6绝对定位的问题

问题:

<divstyle="position:relative;border:1px solidorange;text-align:center;">

<divstyle="position:absolute;top:0;left:0;

background:#CCC;">dovapour</div>

<a href="#" title="vapourblog">内容</a>

</div>

解决:

left的定位错误问题

1、给父层设置zoom:1触发layout

2、给父层设置宽度wiidth

bottom的定位错误问题

1、给父层设置zoom:1触发layout

2、给父层设置高度heiight

43.子容器宽度大于父容器宽度时,内容超出

问题:

DIV的宽度和父DIV的宽度都已经定义,在IE6中如果其子DIV的宽度大于父DIV的宽度,父DIV的宽度将会被扩展,在其他浏览器中父DIV的宽度将不会扩展,子DIV将超出父DIV

解决:

设置overflow:hidden,子DIV将不会超出父DIV

44.floatdiv闭合的问题

问题:

例如:<#div id=”floatA”><#div id=”floatB”><#div id=”NOTfloatC”>这里的NOTfloatC并不希望继续平移,而是希望往下排。(其中floatAfloatB的属性已经设置为 float:left;)  

这段代码在IE中毫无问题,问题出在其他浏览器中。原因是NOTfloatC并非float标签,必须将float标签闭合。

解决:

<#div class=”floatB”> <#div class=”NOTfloatC”>之间加上<#div class=”clear”>这个div一定要注意位置,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。并且将clear这种样式定义为为如下即可:.clear{ clear:both;}

45.单选框、复选框与后面的文字对不齐

问题:

单选框、复选框与后面的文字对不齐。

解决:

.align{font-size:12px;}

.align input{ display:block; float:left;}

.align label{ display:block; float:left;padding-top:3px; *padding-top:5px;}

需注意的问题:

1.设置padding后高度和宽带都会增加

说明:

除了ie5.5,其他所有浏览器中,设置padding以后高度和宽带都会增加

2.使用XHTML 1.0Transitional后,div宽度

说明:

在使用XHTML 1.0Transitional以后div宽度都不包含border的宽度了,设置宽度的时候需要注意下。

3.外层相对定位,内层绝对定位

说明:

ie6下,外层divpostion:relative,并设置text-align,内层divpostion: absolute,这时内层的位置是相对于text-align而言的

例如:

<divstyle="position:relative;border:1px solidorange;text-align:center;zoom:1"> position:relative

<divstyle="position:absolute;top:0;left:0;background:#CCC;">position:absolute</div>

</div>

4.显示的大小不一致

说明:

默认字本显示问题,导致 显示的大小不一致,在ie下比较小一点,其他的浏览器都一致,当你使用了 造成问题时请注意。

5. 边框重叠说明

说明:

tabletd 都指定了边框后,然后使用border-collapse:collapse让边框重叠,可以看出在发生重叠时,Firefox是用 td 覆盖 table 的,而 IE 是用 table 覆盖 td 的。使用时候需要注意。

6. 设置td padding的说明

说明:

设置tdpadding以后高度和宽带都会增加,padding-leftpadding-right的效果都一样增加了td的宽带,但是padding-toppadding-bottom的效果不一样。最好不要使用tdding-toppadding-bottom

7. ul设置的说明

说明:

ul一般设置:list-style-type:none;margin:0px;padding:0pxli一般设置:list-style-type:none;list-style-position:outside

8.使一个层垂直居中于浏览器中

说明:

使用百分比绝对定位,与外补丁负值的技巧,负值的大小为其自身宽度高度除以二

div {

position:absolute; top:50%; lef:50%; margin:-100px 0 0 -100px;

wiidth:200px; heiight:200px; border:1px solidred;

}

9. 万能 float 闭合

说明:

可以用这个解决多个div对齐时的间距不对,将以下代码加入Global CSS ,给需要闭合的div加上 class=”clearfix” 即可

<style>

.clearfix:after { content:".";display:block;heiight:0; clear:both;visibility:hidden;

}

.clearfix {

display:inline-block;

}

.clearfix {display:block;}

</style>

10.触发layout

说明:

IE6中很多Bug都可以通过触发layout得到解决.下列的CSS属性或取值会让一个元素获得layout        

position:absolute 绝对定位元素的包含区块(containingblock)就会经常在这一方面出问题

float:left|right 由于layout元素的特性,浮动模型会有很多怪异的表现

display:inline-block 当一个内联级别的元素需要layout的时候就往往符用到它,这也可能也是这个CSS属性的唯一效果----让某个元素有layout

wiidth: auto外的任何值

heiight: auto外的任何值

zoom: auto外的任何值

11、如何使连续长字段自动换行

ff最新版本word-wrap:break-word;就可以了

ff旧版本 还要使用java script完成文字换行

<style type="text/css">

div {

wiidth:300px;

word-wrap:break-word;

border:1px solid red;

}

</style>

<scripttype="text/java script">

function toBreakWord(intLen){

varobj=document.getElementByIdx_x("ff");

var strContent=obj.innerHTML;

var strTemp="";

while(strContent.length>intLen){

strTemp+=strContent.substr(0,intLen)+" ";

strContent=strContent.substr(intLen,strContent.length);

}

strTemp+=" "+strContent;

obj.innerHTML=strTemp;

}

if(document.getElementByIdx_x &&  !document.all)  toBreakWord(37)

12、设置滚动条颜色 只对ie系列有效 html 而不是设置body

<style type="text/css">

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;

}

</style>

IE不支持floatinherit overflow:hidden2个用法,一个是隐藏溢出,另一个是清除浮动。

<div>, <p>, <h1>,<form>, <ul> <li>是块元素的例子

<span>, <a>, <label>,<input>, <img>, <strong> <em>inline元素

<body oncontextmenu="returnfalse" ondragstart="return false" tstart="returnfalse" scroll="auto">

这行代码放在body中,去掉了页面鼠标右键快捷菜单,达到防止图片另存为的目的。

java script部分

1.document.form.item 问题

问题:

代码中存在 document.formName.item("itemName") 这样的语句,不能在FF下运行

解决方法:

改用document.formName.elements["elementName"]

2.集合类对象问题

问题:

代码中许多集合类对象取用时使用()IE能接受,FF不能

解决方法:

改用 [] 作为下标运算,例:

document.getElementsByName("inputName")(1) 改为document.getElementsByName("inputName")[1]

3.window.event

问题:

使用 window.event 无法在FF上运行

解决方法:

FF event 只能在事件发生的现场使用,此问题暂无法解决。可以把 event 传到函数里变通解决:

onMouseMove = "functionName(event)"

function functionName (e) {

e = e || window.event;

......

}

4.HTML对象的 id 作为对象名的问题

问题:

IE中,HTML对象的 ID 可以作为 document 的下属对象变量名直接使用,在FF中不能

解决方法:

使用对象变量时全部用标准的 getElementById("idName")

5. idName 字符串取得对象的问题

问题:

IE中,利用 eva l_r("idName") 可以取得 id idName HTML对象,在FF中不能

解决方法:

getElementById("idName") 代替eva l_r("idName")

6.变量名与某HTML对象 id 相同的问题

问题:

FF中,因为对象 id 不作为HTML对象的名称,所以可以使用与HTML对象 id 相同的变量名,IE中不能

解决方法:

在声明变量时,一律加上 var ,以避免歧义,这样在IE中亦可正常运行

最好不要取与HTML对象 id 相同的变量名,以减少错误

7. event.x event.y 问题

问题:

IE中,event 对象有x,y属性,FF中没有

解决方法:

FF中,与 event.x 等效的是 event.pageX ,但event.pageX IE中没有

故采用 event.clientX 代替 event.x ,在IE中也有这个变量

event.clientX event.pageX 有微妙的差别,就是祸动条

要完全一样,可以这样:

mX = event.x ? event.x : event.pageX;

然后用 mX 代替 event.x

8.关于frame

问题:

IE中可以用 window.testFrame 取得该frameFF中不行

解决方法:

window.top.document.getElementByIdx_x("testFrame").src = 'xx.htm'

window.top.frameName.location = 'xx.htm'

9.取得元素的属性

FF中,自己定义的属性必须 getAttribute() 取得

10.FF中没有 parentElementparement.children 而用 parentNodeparentNode.childNodes

问题:

childNodes 的下标的含义在IEFF中不同,FF childNodes 中会插入空白文本节点

解决方法:

可以通过 node.getElementsByTagName_r() 来回避这个问题

问题:

html中节点缺失时,IEFF parentNode 的解释不同,例如:

<form>

<table>

<input/>

</table>

</form>

FF input.parentNode 的值为form,而IE input.parentNode 的值为空节点

问题:

FF中节点自己没有 removeNode 方法

解决方法:

必须使用如下方法 node.parentNode.removeChild(node)

11.const问题

问题:

IE中不能使用 const 关键字

解决方法:

var 代替

12.body对象

FF body body 标签没有被浏览器完全读入之前就存在,而IE则必须在 body 完全被读入之后才存在

这会产生在IE下,文档没有载入完时,在bodyappendChild会出现空白页面的问题

解决方法:

一切在body上插入节点的动作,全部在onload后进行

13.url encoding

问题:

一般FF无法识别js中的&

解决方法:

js中如果书写url就直接写&不要写&

14. nodeName tagName 问题

问题:

FF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值,在IE中,nodeName 的使用有问题

解决方法:

使用 tagName,但应检测其是否为空

15.元素属性

IE input.type 属性为只读,但是FF下可以修改

16. document.getElementsByName() document.all[name] 的问题

问题:

IE中,getElementsByName()document.all[name] 均不能用来取得 div 元素

是否还有其它不能取的元素还不知道(这个问题还有争议,还在研究中)

17.调用子框架或者其它框架中的元素的问题

IE中,可以用如下方法来取得子元素中的值

document.getElementByIdx_x("frameName").(document.)elementName

window.frames["frameName"].elementName

FF中则需要改成如下形式来执行,与IE兼容:

window.frames["frameName"].contentWindow.document.elementName

window.frames["frameName"].document.elementName

18.对象宽高赋值问题

问题:

FireFox中类似 obj.style.heiight = imgObj.heiight 的语句无效

解决方法:

统一使用 obj.style.heiight = imgObj.heiight + "px";

19. innerText的问题

问题:

innerText IE中能正常工作,但是 innerText FireFox中却不行

解决方法:

在非IE浏览器中使用textContent代替innerText

20. event.srcElementevent.toElement问题

问题:

IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性

解决方法:

var source = e.target || e.srcElement;

var target = e.relatedTarget || e.toElement;

21.禁止选取网页内容

问题:

FF需要用CSS禁止,IEJS禁止

解决方法:

IE: obj.onselectstart = function() {return false;}

FF: -moz-user-select:none;

22.捕获事件

问题:

FF没有setCapture()releaseCapture()方法

解决方法:

IE:

obj.setCapture();

obj.releaseCapture();

FF:

window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);

if (!window.captureEvents) {

o.setCapture();

}else {

window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

}

if (!window.captureEvents) {

o.releaseCapture();

}else {

window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);

}

提示:输入修改代码都可运行!
1
酒精度
79
顶一下
相关阅读
内容加载中……