ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:21.56KB ,
资源ID:12599377      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12599377.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(CSS完美兼容.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

CSS完美兼容.docx

1、CSS完美兼容关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助.一、CSS HACKHACK概念:不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。这个针对不同的浏览器写不同的CSS code的过程,就叫CSS

2、hack,HACK规则:IE都能识别*;标准浏览器(如FF)不能识别*;IE6能识别*,但不能识别 !important,IE7能识别*,也能识别!important;FF不能识别*,但能识别!important; IE6 IE7 FF * !important 浏览器优先级别:FFIE7IE6,CSS hack书写顺序一般为FF IE7 IE6例:以: #demo width:100px; 为例; #demo width:100px; * html #demo width:120px; *+html #demo width:130px; - 所以最后,#demo的宽度在三个浏览器的解释为:F

3、IREFOX:100px; ie6:120px; ie7:130px;以下两种方法几乎能解决现今所有HACK.1, !important随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)#wrapperwidth: 100px!important;width: 80px;2, IE6/IE77对FireFox*+html 与 *html 是IE特有的标签, firefox 暂不支持.而*+html 又为 IE7特有标签.#wrapper#wrapper width: 120px; *html #wrapper

4、width: 80px;*+html #wrapper width: 60px;注意:*+html 对IE7的HACK 必须保证HTML顶部有如下声明:二、万能 float 闭合关于 clear float 的原理可参见 How To Clear Floats Without Structural Markup将以下代码加入Global CSS 中,给需要闭合的div加上 class=clearfix 即可,屡试不爽. .clearfix:aftercontent:.;display:block;height:0;clear:both;visibility:hidden;.clearfixdi

5、splay:inline-block; .clearfix display:block; 三、其他兼容技巧1.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值。所以先定义ulmargin:0;padding:0;就能解决大部分问题。也可用!important解决2. 居中问题.1).垂直居中.将 line-height 设置为 当前 div 相同的高度, 再通过 vertical-align: middle.( 注意内容不要换行.)2).水平居中. margin: 0 auto;(当然不是万能)你可以把html的body之内任何项目置于中,该项目将自动获得相

6、等的左右边界值从而保证了居中显示。不过,这在IE6之前版本的浏览器中仍然有问题,将不会居中,因此必须修改如下:body text-align: center;#content text-align: left;width: 700px;margin: 0 auto;对body的设定将导致主体内容居中,但是连所有的文字也居中了,这恐怕不是你想要的效果,为此#content 的div还要指定一个值:text-align: left3. IE5 和IE6的BOX解释不一致IE5下divwidth:300px;margin:0 10px 0 10px;div的宽度会被解释为300px-10px(右填充

7、)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改divwidth:300px!important;width :340px;margin:0 10px 0 10px关于这个是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)4. FORM标签与ul 标签的事先声明这2个标签在IE中,将会自动margin一些边距,而在FF中margin则是0,因此, 如果想显示一致,所以最好在css中指定margin和 p

8、adding,针对上面两个问题,我的css中一般首先都使用这样的样式ul,formmargin:0;padding:0;给定义死了,所以后面就不会为这个头疼了.5.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以6.如果文字过长,则将过长的部分变成省略号显示:IE5,FF无效,但可以隐藏,IE6有效 就是比如有一行文字,很长,表格内一行显示不下。P固定宽度汉字截断:overflow:hidden;text-overflow:ellipsis;white-space:nowrap;(不过只能处理文字在一行上的截断,不能处理多行。)(IE5以上)

9、FF不能,它只隐藏。7.IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样:#box width: 80px; height: 35px;htmlbody #box width: auto; height: auto; min-width: 80px; min-height: 35px;8. 浮动ie产生的双倍距离#box flo

10、at:left; width:100px; margin:0 0 0 100px; /这种情况之下IE会产生200px的距离 display:inline; /使浮动忽略这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);#box display:block; /可以为内嵌元素模拟为块元素 display:inline; /实现同一行排列的效果 diplay:table;10. 为什么FF下文本无法撑开容器的高度标准浏览器中固定高度值的容器是不会

11、象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢?办法就是去掉height设置min- height:200px; 这里为了照顾不认识min-height的IE6 可以这样定义:height:auto!important;height:200px;min-height:200px;11. 清除浮动.hackbox display:table; /将对象作为块元素级的表格显示或者.hackbox clear:both;或者加入:after(伪对象),设置在对象后发生的内容,通常和content配合使用,IE不支持此伪对象,非Ie 浏览器支持,所 以并不影响到IE/WIN浏览器

12、。这种的最麻烦的.#box:after content: .; display: block; height: 0; clear: both; visibility: hidden;8 DIV浮动IE文本产生3象素的bug左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.#box float:left; width:800px;#left float:left; width:50%;#right width:50%;*html #left margin-right:-3px; /这句是关键HTML代码 9 属性选择器(这个不能算是兼容,是隐藏css的一个bug

13、)piddivid这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如pid中,所有p标签中有id的都是同样式的.10 IE捉迷藏的问题当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。解决办法:对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。11 高度不适应高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用m

14、argin 或paddign 时。例:p对象中的内容CSS:#box background-color:#eee; #box p margin-top: 20px;margin-bottom: 20px; text-align:center; 解决方法:在P对象上下各加2个空的div对象CSS代码:.1height:0px;overflow:hidden;或者为DIV加上border属性。 1.DOCTYPE 影响 CSS 处理2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行3.FF: body 设置 text-align 时

15、, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行7

16、.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:divmargin:30px!important;margin:28px;注意这两个margin的顺序一定不能写反,据阿捷的说法!impor

17、tant这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:divmaring:30px;margin:28px重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;10.IE5 和IE6的BOX解释不一致IE5下divwidth:300px;margin:0 10px 0 10px;div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改divwidth:300px

18、!important;width :340px;margin:0 10px 0 10px关于这个是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义ulmargin:0;padding:0;就能解决大部分问题注意事项:1、float的div一定要闭合。例如:(其中floatA、floatB的属性已经设置为float:left;)这里的NOTfloatC并不希望继续平移,而是希望往下排。这段代码在IE中毫无问题,问题出在FF。原因是NOT

19、floatC并非float标签,必须将float标签闭合。在之间加上这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。并且将clear这种样式定义为为如下即可:.clearclear:both;此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。例如某一个wrapper如下定义:.colwrapperoverflow

20、:hidden;zoom:1;margin:5px auto;2、margin加倍的问题。设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline;例如:相应的css为#IamFloatfloat:left;margin:5px;display:inline;3、关于容器的包涵关系很多时候,尤其是容器内有平行布局,例如两、三个float的div时,宽度很容易出现问题。在IE中,外层的宽度会被内层更宽的div挤破。一定要用Photoshop或者Firework量取像素级的精度。4、关于高度的问题如果是动态地

21、添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。(似乎有时候不会自动往下撑开,不知道具体怎么回事)5、最狠的手段 - !important;如果实在没有办法解决一些细节问题,可以用这个方法.FF对于!important会自动优先解析,然而IE则会忽略.如下.tabd1background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important;background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; PS:IE下很多地方可以省略一些层定义的

22、浮动属性,但是FF不行,必须每个个层都写清楚,几个 DIV层水平排列的时候,IE6中必须要加display:inline;,不然前端会出现双倍间距,而FF中则加不加display都显示正常.这些都是由浏览器默认值的不同而引起的,你看到那些大站的布局在各浏览器中都显示正常,是因为他们把这些默认有区别的地方都定义清楚了.兼容多种浏览器,只要记住IE7=*,IE6=_,然后按照先Firefox后IE7,最后 IE6的顺序进行编写,一般就可以保证大部分用户浏览正常了。如:#abcwidth:600px;* width:600px;_ width:590px;这样Firefox读取时只看到了正常的定义,而IE都能看到第二个*的定义,于是忽略第一个正常的定义,而IE中因为IE7 不再支持_,所以按照第一个带*号的执行,IE6支持_,所以认为带*后的也是重复定义,予以忽略,执行最后一个定义。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2