div+css兼容性解决方案.docx

上传人:b****7 文档编号:9545216 上传时间:2023-02-05 格式:DOCX 页数:11 大小:22.30KB
下载 相关 举报
div+css兼容性解决方案.docx_第1页
第1页 / 共11页
div+css兼容性解决方案.docx_第2页
第2页 / 共11页
div+css兼容性解决方案.docx_第3页
第3页 / 共11页
div+css兼容性解决方案.docx_第4页
第4页 / 共11页
div+css兼容性解决方案.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

div+css兼容性解决方案.docx

《div+css兼容性解决方案.docx》由会员分享,可在线阅读,更多相关《div+css兼容性解决方案.docx(11页珍藏版)》请在冰豆网上搜索。

div+css兼容性解决方案.docx

div+css兼容性解决方案

div+css兼容性问题全解

1、div+css如何使网站兼容不同字体

使用utf-8内码进行编写

(右键-编码-选择一种其它国家的编码-查看效果)

asp代码如下:

<%

functionchinese2unicode(Str)

dimi

dimStr_one

dimStr_unicode

fori=1tolen(Str)

Str_one=Mid(Str,i,1)

Str_unicode=Str_unicode&chr(38)

Str_unicode=Str_unicode&chr(35)

Str_unicode=Str_unicode&chr(120)

Str_unicode=Str_unicode&Hex(ascw(Str_one))

Str_unicode=Str_unicode&chr(59)

next

Response.WriteStr_unicode

endfunction

%>

使用方法:

<%=chinese2unicode("显示的内容")%>

2、关于div+css兼容IE和firefox的问题

好不容易建立的div+css网页完全符合W3C标准。

在ie7下显示非常完美,用firefox一测试,乖乖一探糊涂惨不忍睹。

经过一番研究发现兼容很

简单。

1、增加div{overflow:

hidden;},目的就是让div自动适应内容高度

2、横排的div外套div

另外设定

ul{

margin:

0px;

padding:

0px;

}

是消除li前面的空格

3、div+css兼容性问题

CSS兼容要点:

DOCTYPE影响CSS处理

FF:

div设置margin-left,margin-right为auto时已经居中,IE不行

FF:

body设置text-align时,div需要设置margin:

auto(主要是margin-left,margin-right)方可居中

FF:

设置padding后,div会增加height和width,但IE不会,故需要用!

important多设一个height和width

FF:

支持!

important,IE则忽略,可用!

important为FF特别设置样式

div的垂直居中问题:

vertical-align:

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

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

缺点是

要控制内容不要换行

cursor:

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

FF:

链接加边框和背景色,需设置display:

block,同时设置float:

left保证不换行。

参照menubar,给a和menubar设置高度是为了

避免底边显示错位,若不设height,可以在menubar中插入一个空格XHTML+CSS兼容性解决方案小集

使用XHTML+CSS构架好处不少,但也确实存在一些问题,不论是因为使用不熟练还是思路不清晰,我就先把一些我遇到的问题写在下面。

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

divcssxhtmlxmlExampleSourceCodeExampleSourceCode

div{margin:

30px!

important;margin:

28px;}

注意这两个margin的顺序一定不能写反,据阿捷的说法!

important这个属性IE不能识别,但别的浏览器可以识别。

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

divcssxhtmlxmlExampleSourceCodeExampleSourceCode

div{maring:

30px;margin:

28px}

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

XXpx!

important;

2.IE5和IE6的BOX解释不一致IE5下div{width:

300px;margin:

010px010px;}div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终

div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。

这时我们可以做如下修改:

divcssxhtmlxmlExampleSourceCodeExampleSourceCode

div{width:

300px!

important;width/**/:

340px;margin:

010px010px}

关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!

3.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义

divcssxhtmlxmlExampleSourceCodeExampleSourceCode

ul{margin:

0;padding:

0;}

就能解决大部分问题

4.关于脚本,在xhtml1.1中不支持language属性,只需要把代码改为

divcssxhtmlxmlExampleSourceCodeExampleSourceCode

4、div+css兼容问题解决方案(IE5/5.5/6/7/FF)

之前找了几个不同版本的可独立运行的IE浏览器,正好拿来试试页面的兼容性问题。

不试不知道,在IE6和FF中没问题的页面在IE5和IE5.5中乱

成一团,一直听说IE5是WEB标准制作的一个“钉子户”,现在不得不相信了。

既然有问题,那就找找解决的方法咯,在网上一搜,相关的文章还是不少的,觉得最直接的方法还是“IE条件注释”,很方便的就能为IE的不

同版本写样式。

但这样就得为每个版本写一个样式,不利于文件的优化。

找了一些相关的CSSHACK后,觉得应该可以把IE5/IE5.5/IE6/FF的HACK写到一起的,经过测试,终于找到了一个不错的方法,下面我们来看看

怎么实现:

大家都知道用!

important声明可以提升指定样式规则的应用优先权,如下面的例子:

E1{

background-color:

red!

important;/*提升优先权*/

background-color:

blue;

}

但这样写在IE中会有个问题,看过我的《关于CSS样式表优先级》和《关于CSS样式表优先级补遗》,你会知道在IE6和FF中用!

important声明

可以提高优先级别,但在IE6中的!

important声明并不是绝对的,它会被之后的同名属性定义所替换。

也就是说在上面的例子中,IE6所应用的

是最后一个背景色的值,即“blue”;而在FF中背景色的值为“red”。

根据这一点,我们就可以把FF和IE的样式分离开。

OK,解决了FF和IE的问题,现在来解决IE自己的问题。

看过了嘟嘟的《绕过IE6支持IE5的别一种写法-IE也支持">"》后有感而发,使用“>”IE是否真的可以认得?

我们来看个例子:

E1{

background-color:

red;

>background-color:

blue;

}

在FF中得到的是背景色红色,而在IE中得到的背景色是蓝色,根据样式重定义的规则,如果浏览器可以识别“>”,则应该得到的蓝色的背景

,因此可以知道“>”只有IE可以识别,这点是很重要的哦!

在后面大家就会知道了。

(注:

我测试过其它的一些符号,如“~”、“`”、“

<”等,都只有IE可以识别,在此为了感谢嘟嘟,推荐使用“>”)

我们再来看个例子:

E1{

>/*IEonly*/background-color:

black;

>/*IEonly*/background-color/*IE5.5*/:

green;

}

这个例子在IE6中得到了黑色的背景;而在IE5.5中得到的绿色的背景;在IE5中也得到了黑色的背景。

这就说明了第二句定义只有IE5.5能识别

,这是个很早就公布的HACK,可以在网上找到相关的资料,要注意的就是在属性名之后是有一个空格的。

到此我们已经把FF、IE5.5、IE6分离

出来了,那IE5呢?

其实现在我们只要把IE5跟IE6分开就OK了,来看看例子:

E1{

>/*IEonly*/background-color:

red;/*IE5*/

}

E1/*IE5.5+*/{

>/*IEonly*/background-color:

black;

}

这里我们又用到一个HACK,就是“E1/**/{}”,这个定义在IE5以上的版本才能识别出来。

这个例子得到的结果是,在IE5中的背景色为红色;

在IE5以上版本中得到的是黑色背景。

终于把不同版本的浏览器都分离出来了,这样我们就可以为不同的浏览器定义不同的样式了。

来看个完整的例子:

E1{

width:

500px;

height:

50px;

background-color:

red!

important;/*FF*/

background-color:

blue;/*IE5*/

text-align:

center;

}

E1/*IE5.5+*/{

>/*IEonly*/background-color:

black;/*IE6*/

>/*IEonly*/background-color/*IE5.5*/:

green;

}

需要注意的是,在上面例子中“background-color”定义的顺利不能改变,即FF-IE5-IE6-IE5.5。

对于IE的定义在属性前要加“>”,因为

“E1/**/{}”这个HACK在FF中可以识别。

也许你会想,上面的例子不是可以写成:

E1{

width:

500px;

height:

50px;

background-color:

red;/*FF*/

>background-color:

blue;/*IE5*/

text-align:

center;

}

E1/*IE5.5+*/{

>/*IEonly*/background-color:

black;/*IE6*/

>/*IEonly*/background-color/*IE5.5*/:

green;

}

这样不就又可以省下几个字节?

是没错,可是HACK不是标准,如果滥用HACK,那只会离标准越来越远!

6、div+css实现Firefox和IE6兼容的垂直居中

Firefox中使用display:

table-cell;vertical-align:

middle;可以实现div垂直居中,而IE6中则需要借助IE6中css的特点实现垂直居中。

了实现Firefox和IE6兼容的垂直居中,还需要借助于!

important标记。

Firefox支持!

important标记,而IE6忽略!

important标记,因此可以使

用!

important标记区别Firefox和IE6。

[示例代码]

table-cell;vertical-align:

middle;height:

200px;border:

1pxsolidred;">

垂直居中,Firefoxonly

垂直居中,Firefoxonly

垂直居中,Firefoxonly

1pxsolidred;height:

200px;position:

relative;">

absolute;top:

50%;">

relative;top:

-50%;">

垂直居中,IE6only

垂直居中,IE6only

垂直居中,IE6only

1pxsolidred;height:

200px;position:

relative;display:

table-cell;vertical-align:

middle;">

static!

important;position:

absolute;top:

50%;">

relative;top:

-50%;">

垂直居中,FirefoxIE6only

垂直居中,FirefoxIE6only

垂直居中,FirefoxIE6only

7、div+css的浏览器兼容问题

水平居中,Firefox使用margin-left:

auto;margin-right:

auto;IE6使用text-align:

center;

垂直居中,Firefox中使用display:

table-cell;vertical-align:

middle;可以实现div垂直居中,而IE6中则需要借助IE6中css的特点实现垂

直居中。

!

important标记,Firefox支持!

important标记,IE6忽略!

important标记

DIV+CSS兼容IE6IE7火狐

在区别火狐和IE时最常用的是!

important方法,对于其他不同浏览器和浏览器的不同版本的的兼容性问题还有下面一些方法,比如!

important,注释,属性选择符,子对象选择符和voice-family等方法,这些方法在《css网站布局实录》中有讲述.

下面是IE和火狐的css兼容性问题

1.DOCTYPE影响CSS处理

2.FF:

div设置margin-left,margin-right为auto时已经居中,IE不行

3.FF:

body设置text-align时,div需要设置margin:

auto(主要是margin-left,margin-right)方可居中

4.FF:

设置padding后,div会增加height和width,但IE不会,故需要用!

important多设一个height和width

5.FF:

支持!

important,IE则忽略,可用!

important为FF特别设置样式,值得注意的是,一定要将xxxx!

important这句放置在另一句之上

6.div的垂直居中问题:

vertical-align:

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

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

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

7.cursor:

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

8.FF:

链接加边框和背景色,需设置display:

block,同时设置float:

left保证不换行。

参照menubar,给a和menubar设置高度是为了避免底边显示错位,若不设height,可以在menubar中插入一个空格。

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

div{margin:

30px!

important;margin:

28px;}

注意这两个margin的顺序一定不能写反,据阿捷的说法!

important这个属性IE不能识别,但别的浏览器可以识别。

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

div{maring:

30px;margin:

28px}

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

XXpx!

important;

10.IE5和IE6的BOX解释不一致

IE5下div{width:

300px;margin:

010px010px;}

div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。

这时我们可以做如下修改div{width:

300px!

important;width/**/:

340px;margin:

010px010px}

关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!

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

0;padding:

0;}

就能解决大部分问题

注意事项:

1、float的div一定要闭合。

例如:

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

left;)<#divid=\”floatA\”>

<#divid=\”floatB\”>

<#divid=\”NOTfloatC\”>

这里的NOTfloatC并不希望继续平移,而是希望往下排。

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

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

在<#divclass=\”floatB\”>

<#divclass=\”NOTfloatC\”>

之间加上<#divclass=\”clear\”>

这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。

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

.clear{

clear:

both;}

此外,为了让高度能自动适应,要在wrapper里面加上overflow:

hidden;

当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!

)用zoom:

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

例如某一个wrapper如下定义:

.colwrapper{

overflow:

hidden;

zoom:

1;

margin:

5pxauto;}

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、关于容器的包涵关系

很多时候,尤其是容器内有平行布局,例如两、三个float的div时,宽度很容易出现问题。

在IE中,外层的宽度会被内层更宽的div挤破。

一定要用Photoshop或者Firework量取像素级的精度。

4、关于高度的问题

如果是动态地添加内容,高度最好不要定义。

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

(似乎有时候不会自动往下撑开,不知道具体怎么回事)

5、最狠的手段-!

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这句放置在另一句之上,上面已经提过

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

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

现在我大部分都是用!

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

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

搜索了一下,找到一个针对IE7不错的hack方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了。

现在写一个CSS可以这样:

#example{color:

#333;}/*Moz*/

*html#example{color:

#666;}/*IE6*/

*+html#example{color:

#999;}/*IE7*/

那么在firefox下字体颜色显示为#333,IE6下字体颜色显示为#666,IE7下字体颜色显示为#999,他们都互不干扰。

我真希望那个垃圾的IE6快点退休。

DIV+CSS三行三列布局(兼容各种浏览器)

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http:

//www.w3.org/TR/html4/strict.dtd">

DIV布局测试

div

{

height:

150px;

}

div.left

{

width:

20%;

float:

left;

clear:

right;

background-color:

#eeeeee;

}

div.center

{

width:

50%;

float:

left;

clear:

right;

background-color:

#CCCCCC;

}

div.right

{

width:

30%;

float:

left;

clear:

right;

background-color:

#808080;

}

div.both

{

width:

100%;

clear:

both;

background-color:

#696969;

}

左侧

中侧

右侧

全行

左侧

中侧

右侧

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

当前位置:首页 > 高等教育 > 文学

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

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