版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、div+css兼容性问题全解1、div+css如何使网站兼容不同字体使用utf-8内码进行编写(右键-编码-选择一种其它国家的编码-查看效果)asp代码如下:<%functionchinese2unicode(Str)dimidimStr_onedimStr_unicodefori=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_un
2、icode&Hex(ascw(Str_one)Str_unicode=Str_unicode&chr(59)nextResponse.WriteStr_unicodeendfunction%>使用方法:<%=chinese2unicode("显示的内容")%>2、关于div+css兼容IE和firefox的问题好不容易建立的div+css网页完全符合W3C标准。在ie7下显示非常完美,用firefox一测试,乖乖一探糊涂惨不忍睹。经过一番研究发现兼容很简单。1、增加divoverflow:hidden;,目的就是让div自动适应内容高度2、
3、横排的div外套div另外设定ulmargin: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和widthFF:支持!important,IE则忽略,可用!i
4、mportant为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构架好处不少,但
5、也确实存在一些问题,不论是因为使用不熟练还是思路不清晰,我就先把一些我遇到的问题写在下面。1.在mozillafirefox和IE中的BOX模型解释不一致导致相差2px解决方法:divcssxhtmlxmlExampleSourceCodeExampleSourceCodedivmargin:30px!important;margin:28px;注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:divcssxhtmlxmlExampleSourceCodeExampleSourceCodedivma
6、ring:30px;margin:28px重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;2.IE5和IE6的BOX解释不一致IE5下divwidth:300px;margin:010px010px;div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改:divcssxhtmlxmlExampleSourceCodeExampleSourceCodedivwidth:300px!
7、important;width/*/:340px;margin:010px010px关于这个/*/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)3.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义divcssxhtmlxmlExampleSourceCodeExampleSourceCodeulmargin:0;padding:0;就能解决大部分问题4.关于脚本,在xhtml1.1中不支持language属性,只需要把代码改为divcssxhtmlxmlExampleSourceCo
8、deExampleSourceCode<scripttype="text/javascript">4、div+css兼容问题解决方案(IE5/5.5/6/7/FF)之前找了几个不同版本的可独立运行的IE浏览器,正好拿来试试页面的兼容性问题。不试不知道,在IE6和FF中没问题的页面在IE5和IE5.5中乱成一团,一直听说IE5是WEB标准制作的一个“钉子户”,现在不得不相信了。既然有问题,那就找找解决的方法咯,在网上一搜,相关的文章还是不少的,觉得最直接的方法还是“IE条件注释”,很方便的就能为IE的不同版本写样式。但这样就得为每个版本写一个样式,不利于文件的优化
9、。找了一些相关的CSSHACK后,觉得应该可以把IE5/IE5.5/IE6/FF的HACK写到一起的,经过测试,终于找到了一个不错的方法,下面我们来看看怎么实现:大家都知道用!important声明可以提升指定样式规则的应用优先权,如下面的例子:E1background-color:red!important;/*提升优先权*/background-color:blue;但这样写在IE中会有个问题,看过我的关于CSS样式表优先级和关于CSS样式表优先级补遗,你会知道在IE6和FF中用!important声明可以提高优先级别,但在IE6中的!important声明并不是绝对的,它会被之后的同名属
10、性定义所替换。也就是说在上面的例子中,IE6所应用的是最后一个背景色的值,即“blue”;而在FF中背景色的值为“red”。根据这一点,我们就可以把FF和IE的样式分离开。OK,解决了FF和IE的问题,现在来解决IE自己的问题。看过了嘟嘟的绕过IE6支持IE5的别一种写法-IE也支持">"后有感而发,使用“”IE是否真的可以认得?我们来看个例子:E1background-color:red;background-color:blue;在FF中得到的是背景色红色,而在IE中得到的背景色是蓝色,根据样式重定义的规则,如果浏览器可以识别“”,则应该得到的蓝色的背景,因此可以
11、知道“”只有IE可以识别,这点是很重要的哦!在后面大家就会知道了。(注:我测试过其它的一些符号,如“”、“”、“”等,都只有IE可以识别,在此为了感谢嘟嘟,推荐使用“”)我们再来看个例子:E1/*IEonly*/background-color:black;/*IEonly*/background-color/*IE5.5*/:green;这个例子在IE6中得到了黑色的背景;而在IE5.5中得到的绿色的背景;在IE5中也得到了黑色的背景。这就说明了第二句定义只有IE5.5能识别,这是个很早就公布的HACK,可以在网上找到相关的资料,要注意的就是在属性名之后是有一个空格的。到此我们已经把FF、I
12、E5.5、IE6分离出来了,那IE5呢?其实现在我们只要把IE5跟IE6分开就OK了,来看看例子:E1/*IEonly*/background-color:red;/*IE5*/E1/*IE5.5+*/*IEonly*/background-color:black;这里我们又用到一个HACK,就是“E1/*/”,这个定义在IE5以上的版本才能识别出来。这个例子得到的结果是,在IE5中的背景色为红色;在IE5以上版本中得到的是黑色背景。终于把不同版本的浏览器都分离出来了,这样我们就可以为不同的浏览器定义不同的样式了。来看个完整的例子:E1width:500px;height:50px;backg
13、round-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中可以识别。也许你会想,上面的例子不是可以写成:E1width:500p
14、x;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-alig
15、n:middle;可以实现div垂直居中,而IE6中则需要借助IE6中css的特点实现垂直居中。为了实现Firefox和IE6兼容的垂直居中,还需要借助于!important标记。Firefox支持!important标记,而IE6忽略!important标记,因此可以使用!important标记区别Firefox和IE6。示例代码<html><body><divstyle="display:table-cell;vertical-align:middle;height:200px;border:1pxsolidred;"><p&g
16、t;垂直居中,Firefoxonly</p><p>垂直居中,Firefoxonly</p><p>垂直居中,Firefoxonly</p></div><divstyle="border:1pxsolidred;height:200px;position:relative;"><divstyle="position:absolute;top:50%;"><divstyle="position:relative;top:-50%;">
17、<p>垂直居中,IE6only</p><p>垂直居中,IE6only</p><p>垂直居中,IE6only</p></div></div></div><divstyle="border:1pxsolidred;height:200px;position:relative;display:table-cell;vertical-align:middle;"><divstyle="position:static!important;positi
18、on:absolute;top:50%;"><divstyle="position:relative;top:-50%;"><p>垂直居中,FirefoxIE6only</p><p>垂直居中,FirefoxIE6only</p><p>垂直居中,FirefoxIE6only</p></div></div></div></body></html>7、div+css的浏览器兼容问题水平居中,Firefox使用margin-
19、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,注释,属性选择符,子对
20、象选择符和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和width5.FF:支持!important,IE则忽略,可用!import
21、ant为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中插入一个空格
22、。9.在mozillafirefox和IE中的BOX模型解释不一致导致相差2px解决方法:divmargin:30px!important;margin:28px;注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:divmaring:30px;margin:28px重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;10.IE5和IE6的BOX解释不一致IE5下divwidth:300px;margin:010px010px;div的宽度会被解释为300px-1
23、0px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改divwidth:300px!important;width/*/:340px;margin:010px010px关于这个/*/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义ulmargin:0;padding:0;就能解决大部分问题注意事
24、项: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这种样式定义为为如下即可:.clearclear:both;此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。例如某一个wrapper如下定义:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026陕西西安医学高等专科学校附属医院招聘43人考试备考试题及答案解析
- 药剂学专科毕业论文题目
- 2026河南安阳殷都初级中学招聘笔试备考试题及答案解析
- 2026重庆市轻工业学校教师岗位招聘4人考试参考试题及答案解析
- 2026年关于食堂食材采购验收安全注意事项
- 油气合建站监理预验收报告
- 2026年土木工程专业生产实习报告
- 2026年网络安全认证专项训练试卷
- 高中地理教育智慧云平台界面设计改进与教师教学满意度评价教学研究课题报告
- 文化活动中心基础验收评估报告(监理)
- 风电场项目工程建设监理投标文件
- 手术室常用质量改进工具
- 私立学校教师聘任制度
- 落地式盘扣脚手架专项施工方案
- BEC商务英语高级考试历年真题
- 《门诊院感》课件
- 压力管道各种壁厚计算及校核
- (完整word版)身份证号码前6位表示的地区对照表
- 金属与石材幕墙工程技术规范-JGJ133-2013含条文说
- 初中生物各章节概念知识框架图
- 空调维保质量保障体系及措施方案
评论
0/150
提交评论