CSS在Internet Explorer 6, 7 和8中的差别
- 格式:doc
- 大小:170.00 KB
- 文档页数:27
CSS兼容性(IE和Firefox)技巧大全CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下。
对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE影响CSS处理,作为W3C的标准,一定要加DOCTYPE声明。
CSS技巧1.div的垂直居中问题vertical-align:middle;将行距增加到和整个DIV一样高line-height:200px;然后插入文字,就垂直居中了。
缺点是要控制内容不要换行2.margin加倍的问题设置为float的div在ie下设置的margin会加倍。
这是一个ie6都存在的bug。
解决方案是在这个div里面加上display:inline;例如:<#div id=”imfloat”>相应的css为#imfloat{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下面根本等于没有设置宽度和高度。
之五兆芳芳创作IE浏览器和火狐浏览器兼容问题.txt22真诚是美酒,年份越久越醇香浓型;真诚是焰火,在高处绽放才愈是美丽;真诚是鲜花,送之于人手有余香.一颗孤傲的心需要爱的滋润;一颗冰冷的心需要友谊的温暖;一颗绝望的心需要力量的托慰;一颗惨白的心需要真诚的帮忙;一颗充满戒备封闭的门是多么需要真诚这一把钥匙打开呀!IE浏览器和火狐浏览器兼容问题——CSS篇一、css+div 样式 IE与FF兼容问题汇总IE和火狐的css兼容性问题归总CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和火狐浏览器存在很大的解析差别,这里介绍一下兼容要点.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 则疏忽, 可用!important 为FF 特别设置样式,值得注意的是,一定要将xxxx !important 这句放置在另一句之上6、div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV 一样高line-height:200px; 然后拔出文字,就垂直居中了.缺点是要控制内容不要换行7、cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以8、FF: 链接加边框和布景色,需设置 display: block, 同时设置 float: left 包管不换行.参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中拔出一个空格.9、在mozilla firefox和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:0 10px 0 10px;}div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计较的.这时我们可以做如下修改div{width:300px! important;width /**/:340px;margin:0 10px 0 10px}关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告知我一声,谢了!:)11、ul标签在Mozilla中默认是有padding值的,而在IE中只有margin 有值所以先定义ul{margin:0;padding:0;}就能解决大部分问题注意事项:1、float的div一定要闭合.例如:(其中floatA、floatB的属性已经设置为float:left;)<#div id=\”floatA\” ><#div id=\”floatB\” ><#div id=\”NOTfloatC\” >这里的NOTfloatC其实不希望持续平移,而是希望往下排.这段代码在IE中毫无问题,问题出在FF.原因是NOTfloatC并不是float标签,必须将float标签闭合.在<#div class=\”floatB\”><#div class=\”NOTfloatC\”>之间加上<#div class=\”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:5px auto;}2、margin加倍的问题.设置为float的div在ie下设置的margin会加倍.这是一个ie6都存在的bug.解决计划是在这个div里面加上display:inline;例如:<#div id=\”imfloat\”>相应的css为#IamFloat{float:left;margin:5px;/*IE下理解为10px*/display:inline;/*IE下再理解为5px*/}3、关于容器的包涵关系良多时候,尤其是容器内有平行计划,例如两、三个float的div 时,宽度很容易出现问题.在IE中,外层的宽度会被内层更宽的div挤破.一定要用Photoshop或Firework量取像素级的精度.4、关于高度的问题如果是动态地添加内容,高度最好不要定义.浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好.(似乎有时候不会自动往下撑开,不知道具体怎么回事)5、最狠的手段 - !important;”!important”会自动优先解析,然而IE则会疏忽.如下.tabd1{ background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */}值得注意的是,一定要将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,他们都互不搅扰.---------------------------------------------------------------------------------------------------------------------------------先温习一下对于IE的box-model的破解IE box-model这个臭名昭著的bug存在于IE6/Win以前的每一只版本,这个虫子直到tantak宣布了流传最为普遍的那个hack才开始被驯服IE5.X/win对box-model的解析是一样的,他们认为width包含了边框(border)和补白(padding),幸运的是这个情况在IE6中有了恶化但是IE6在向后兼容的同时也包涵了以前的错误,IE6其实有两个焦点,在旧的页面前他仍旧表示出对错误的宽容,只有在文档中严格地加上文档类型(DOCTYPE)声明,IE6才干够接受正确的box-model 所以,tantak的hack必须和正确的DOCTYPE同时包含在文档中才干够正常任务Quotediv.content {width:400px; //这个是错误的width,所有浏览器都读到了voice-family: "\"}\""; //IE5.X/win疏忽了"\"}\""后的内容voice-family:inherit;width:300px; //包含IE6/win在内的部分浏览器读到这句,新的数值(300px)笼盖掉了旧的}html>body .content { //html>body是CSS2的写法width:300px; //支持CSS2该写法的浏览器有幸读到了这一句}现在回到主题,我们经常看到!important和(空格)/**/:组合在一起使用,这个写法有什么奇妙呢?看方才那个写法,我这里可以提供另一种写法也能达到这样的效果Quotediv.content {width:300px !important; //这个是正确的width,大部分支持!important标识表记标帜的浏览器使用这里的数值width(空格)/**/:400px; //IE6/win不解析这句,所以IE6/win仍然认为width的值是300px;而IE5.X/win读到这句,新的数值(400px)笼盖掉了旧的,因为!important标识表记标帜对他们不起作用}html>body .content { //html>body是CSS2的写法width:300px; //支持CSS2该写法的浏览器有幸读到了这一句}同样,这个办法仍必须依靠正确的文档类型声明才干够正常任务,原因在前面已经说过.文档类型声明就像一个开关,打开向后兼容的未来,而错误使用的话,就是一个Pandora box---------------------------------------------------------------------------------------------------------------ie7.0的面世,尚且不管他是否较之ie6.0进步,ie7和ie6 之间不兼容,毫无疑问又引入了新的痛处,至少在调试的进程中,又多了一道程序以及随之而来的大量不兼容.目前,使用ie7.0的用户尚且是少数,使用ie6.0的用户仍然占据很大的比重.然而,大量通过ie6 测试的网页,在ie7.0中都显示不正常.据ie7.0官方解说:ie7.0在IE6的根本上引入了strict模式,包含了许多有关于层叠样式表(CSS)解析与呈现的改良.这些改良意在提高Internet Explorer解释层叠样式表的一致性,以达到W3C的推荐的尺度,同时为开发者提供一个可以依赖的功效荟萃.不管官方的语言是多么动听,也不管ie7.0是不是真的W3C了,浏览器之间太多特性化的东西,太多差别,让我们无可奈何.在ie7.0下设计出的网页,ie6下面显示的几近是不堪入目.那么,我们在设计网页的时候,在解决好ie6.0与火狐的兼容问题的同时,我们是更多的从命合适W3C一些的ie7.0,仍是对96%的ie6.0妥协?这个问题其实有些多余,我们能做的,也许只有选择中庸,只有尽量调试到各个浏览器都显示正常吧.ie7.0与ie6.0的之间不兼容,目前就我知道的有如下几个方面,如有遗漏或说错了的地方,欢送在前面弥补或纠正.1. ie7,ie6 div+css出现宽度定义不合在宽度定义上出现宽度的解释不合,IE7宽度在IE6上要宽一些,,正是这个原因网页可能会出现溢出问题, 还好这个问题可以通过更改数值或修改一下百分比解决.2. ie7.0修复了!important这个bug.先前由于ie6.0对!important识别存在bug, 在firefox和IE中的BOX模型解释不一致导致相差2px,大部分网页尺度设计师通过这个bug来兼容ie6.0和firefox,即采取:div {margin:30px!important;margin:28px;}.但是ie7.0把这个bug给修复了,所以问题又出现了,怎么兼容 ie.7.0的同时又能兼容ie6.0和firefox?3. Box Model的改动在IE7中,为了适应CSS2.1 box model修改了溢出的行动.4. ie7.0中一些CSS filter将不再可用IE7中修改了许多潜在解析错误,这些可能会阻止filter在以前的IE版本中正常任务.如:*HTML filter,下划线filter和/**/注释filter等等.5. ie7.0对良多不标准的css不再支持,对js语法要求更严格标准. overflow:hidden这个CSS样式是大家经常使用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个寄义不是很了解.一提到清除浮动,我们就会想到另外一个CSS样式:clear:both,我相信对于这个属性的理解大家都不成问题的.但是对于“浮动”这个词到底包含什么样的寄义呢?我们下面来详细的论述一下.这是一个经常使用的div写法,下面我们来书写样式.大家可以在DMX 中自己做试验#wai{ width:500px; background:#000; height:500px;}#nei { float:left; width:600px; height:600px; background:red;}可以看到,我给nei这个id加了一个浮动,我们常规的理解是,我们允许nei这个id的div的右边出现其他的内容,只要它的宽度不超出wai 这个div和nei这个div的剩余值.如果div wai中还包含其他的div,我不允许它出现在nei的右侧,我们则用样式clear:both指定这个div,不允许它浮动在nei右侧.这些在ie6里面是正确的.但是在火狐或其他浏览器里面,我们发明问题并不是如此复杂.我们发明,当nei这个div的宽度和高度都大于wai这个div的时候,wai并没有被内撑开而是依旧显示为我们指定的宽高.在我的例子中,都是500.这个时候我不睬解了,我搜索了良多的资料,但是都没能理解这是为什么,直到看到他人在类似的情况下给wai这个div加了一个overflow:hidden这个属性解决了这个问题.我们直到overflow:hidden这个属性的作用是隐藏溢出,给wai加上这个属性后,我们的nei的宽高自动的被隐藏掉了.另外,我们再做一个试验,将wai这个div的高度值删除后,我们发明,wai的高度自动的被nei这个div的高度值给撑开了.说到这里,我们再来理解一下“浮动”这个词的寄义.我们原先的理解是,在一个平面上的浮动,但是通过这个试验,我们发明,这不但仅是一个平面上的浮动,而是一个立体的浮动!也就是说,当nei这个div加上浮动这个属性的时候,在显示器的正面,它已经脱离了wai这个div,也就是说,此时的nei的宽高是多少,对于已经脱离了的wai来说,都是不起作用的.打个形象的比方就是当JJ脱离BB的时候,JJ的大小对于BB是没有撑开的作用的(有点少儿不宜的感到-_-|||)OK,当我们全面的理解了浮动这个词的寄义的时候,我们就理解overflow:hidden这个属性中的解释,清除浮动是什么意思了.也就是说,当我们给wai这个div加上overflow:hidden这个属性的时候,其中的nei等等带浮动属性的div的在这个立体的浮动已经被清除了,就比如JJ又进入了BB内,JJ的大小自然又会影响到BB的大小.这就是overflow:hidden这个属性清除浮动的准确寄义.当我们没有给wai这个div设置高度的时候,nei这个div的高度,就会撑开wai这个div,而在另一个方面,我们要注意到的是,当我们给wai这个div加上一个高度值,那么无论nei这个div的高度是多少,wai这个高度都是我们设定的值.而当nei的高度超出wai的高度的时候,超出的部分就会被隐藏.这就是隐藏溢出的寄义!我相信,通过我的这些文字,大家对overflow:hidden这个属性有了全新的认识.希望大家和我一样,在div+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 则疏忽,可用 !important 为 FF 特别设置样式6、div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV 一样高line-height:200px; 然后拔出文字,就垂直居中了.缺点是要控制内容不要换行7、cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以8、FF: 链接加边框和布景色,需设置display: block,同时设置float: left 包管不换行.参照 menubar,给 a 和 menubar 设置高度是为了避免底边显示错位,若不设 height,可以在 menubar 中拔出一个空格.9、在mozilla firefox和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:0 10px 0 10px;}div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计较的.这时我们可以做如下修改div{width:300px!important;width /**/:340px;margin:0 10px 0 10px}关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持.11、ul标签在Mozilla中默认是有padding值的,而在IE中只有margin 有值所以先定义ul{margin:0;padding:0;}就能解决大部分问题注意事项:1、float的div一定要闭合.例如:(其中floatA、floatB的属性已经设置为float:left;)<#div id="floatA" ><#div id="floatB" ><#div id="NOTfloatC" >这里的NOTfloatC其实不希望持续平移,而是希望往下排.这段代码在IE中毫无问题,问题出在FF.原因是NOTfloatC并不是float标签,必须将float标签闭合.在<#div class="floatB"><#div class="NOTfloatC">之间加上<#div class="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:5px auto;}以下前遇到过2、margin加倍的问题.设置为float的div在ie下设置的margin会加倍.这是一个ie6都存在的bug.解决计划是在这个div里面加上display:inline;例如:<#div id="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-repeat 0px 0px !important; /*Style for FF*/background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} 值得注意的是,一定要将xxxx !important 这句放置在另一句之上,上面已经提过 undefined undefinedirefox不支持hand,但ie支持pointer解决办法: 统一使用pointer5. padding 问题padding 5px 4px 3px 1px FireFox无法解释简写,必须改成padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px;6. 消除ul、ol等列表的缩进消除ul、ol等列表的缩进样式应写成:list-style:none;margin:0px;padding:0px;其中margin属性对IE有效,padding属性对FireFox有效7. CSS透明IE:filter:progidXImageTransform.Microsoft.Alpha(style=0,opacity=60). FF:opacity:0.6.8. CSS圆角IE:不支持圆角.FF: -moz-border-radius:4px,或-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;.9. CSS双线凹凸边框IE:border:2px outset;.FF:-moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080;10. 滤镜IE中支持使用滤镜,而Firefox中不支持.11. 禁止选取网页内容:在IE中一般用js:obj.onselectstart=function(){return false;};而firefox用CSS:-moz-user-select:none;罕有兼容问题:模板无忧--mb5u_COm1、DOCTYPE 影响 CSS 处理MB5U@COM2、FF:div 设置 margin-left, margin-right 为 auto 时已经居中,IE 不成3、FF: body 设置text-align 时,div 需要设置margin: auto(主要是margin-left,margin-right) 方可居中模板无忧--mb5u_COm4、FF: 设置 padding 后, div 会增加 height 和 width,但 IE 不会,故需要用 !important 多设一个 height 和 width模板无忧--mb5u_COm5、FF: 支持 !important, IE 则疏忽,可用 !important 为 FF 不凡设置样式6、div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV 一样高line-height:200px; 然后拔出文字,就垂直居中了.缺点是要控制内容不要换行MB5U@COM7、cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以8、FF: 链接加边框和布景色,需设置display: block,同时设置float: left 包管不换行.参照 menubar,给 a 和 menubar 设置高度是为了避免底边显示错位,若不设 height,可以在 menubar 中拔出一个空格.MB5U_COM9、在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决办法:MB5U@COMdiv{margin:30px!important;margin:28px;}注重这两个margin的顺序一定不克不及写反,据阿捷的说法!important 这个属性IE不克不及识别,但此外浏览器可以识别.所以在IE下其实解释成这样:div{maring:30px;margin:28px}IE5下MB5U_coMdiv{width:300px;margin:0 10px 0 10px;}div{width:300px!important;width /**/:340px;margin:0 10px 0 10px}MB5U@COM关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持.11、ul标签在Mozilla中默认是有padding值的,而在IE中只有margin 有值所以先定义ul{margin:0;padding:0;}注重事项:MB5U____COM1、float的div一定要闭合.MB5U____COM例如:(其中floatA、floatB的属性已经设置为float:left;)<#div id="floatB" > 模板无忧--mb5u_COm<#div id="NOTfloatC" >模板无忧-MB5u__com这里的NOTfloatC其实不希望持续平移,而是希望往下排.模板无忧--mb5u_COm模板无忧--mb5u_COm这段代码在IE中毫无问题,问题出在FF.原因是NOTfloatC并不是float标签,必须将float标签闭合.MB5U_COM在<#div class="floatB">MB5U____COM<#div class="NOTfloatC">MB5U_COM之间加上<#div class="clear">mb5u---Com-模板无忧MB5U_coM这个div一定要注重声明位置,一定要放在最恰当的地方,并且必须与两个具有float属性的div同级,之间不克不及存在嵌套关系,不然会产生异常.并且将clear这种样式定义为为如下便可:.clear{模板无忧--mb5u_COm此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;例如某一个wrapper如下定义:以下为引用的内容:.colwrapper{overflow:hidden;zoom:1;margin:5px auto;}设置为float的div在ie下设置的margin会加倍.这是一个ie6都存在的bug.MB5U_coM解决计划例如:<#div id="imfloat">模板无忧-MB5u__commb5u---Com-模板无忧相应的css为MB5U_coM模板无忧-MB5u__com以下为引用的内容:#IamFloat{float:left;margin:5px;/*IE下理解为10px*/display:inline;/*IE下再理解为5px*/}mb5u---Com-模板无忧3、关于容器的包涵关系MB5U____COM4、关于高度的问题模板无忧--mb5u_COm假设是动态地添加内容,高度最好不要定义.浏览器可以自动伸缩,然而假设是静态的内容,高度最好定好.(似乎有时候不会自动往下撑开,不知道具体怎么回事)MB5U@COM模板无忧--mb5u_COm以下为引用的内容:.tabd1{background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} 值得注重的是,一定要将xxxx !important 这句放置在另一句之上,上面已经提过 undefined undefinedCSS兼容IE与Firefox要点阐发2006-10-15 14:43IE vs FFCSS 兼容要点: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 则疏忽, 可用 !important 为 FF 特别设置样式div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高line-height:200px; 然后拔出文字,就垂直居中了.缺点是要控制内容不要换行cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以FF: 链接加边框和布景色,需设置 display: block, 同时设置 float: left 包管不换行.参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中拔出一个空格XHTML+CSS兼容性解决计划小集使用XHTML+CSS构架利益良多,但也确实存在一些问题,不管是因为使用不熟练仍是思路不清晰,我就先把一些我遇到的问题写在下面,省的大家四处找^^1.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决办法:div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不克不及写反,据阿捷的说法!important这个属性IE不克不及识别,但此外浏览器可以识别.所以在IE下其实解释成这样:div{maring:30px;margin:28px}重复定义的话依照最后一个来执行,所以不成以只写margin:XXpx!important;2.IE5 和IE6的BOX解释不一致IE5下div{width:300px;margin:0 10px 010px;}div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div 的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计较的.这时我们可以做如下修改div{width:300px!important;width /**/:340px;margin:0 10px 0 10px},关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告知我一声,谢了!:)3.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义ul{margin:0;padding:0;}就能解决大部分问题二、CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和火狐浏览器存在很大的解析差别,今天和大家谈谈火狐浏览器和IE浏览器下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 则疏忽, 可用 !important 为火狐特别设置样式6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高line-height:200px; 然后拔出文字,就垂直居中了.缺点是要控制内容不要换行7.{cursor: pointer 可以同时在IE、火狐中显示游标手指状,hand 仅IE 可以}8.FF: 链接加边框和布景色,需设置display: block, 同时设置float: left 包管不换行.参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中拔出一个空格.9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决办法:div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不克不及写反,据阿捷的说法! important这个属性IE不克不及识别,但此外浏览器可以识别.所以在IE下其实解释成这样:div{maring:30px;margin:28px}重复定义的话依照最后一个来执行,所以不成以只写margin:XXpx! important;11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义 ul{margin:0;padding:0;}就能解决大部分问题注意事项:1、float的div一定要闭合.例如:(其中floatA、floatB的属性已经设置为float:left;) <#div id=”floatA” ><#div id=”floatB” ><#div id=”NOTfloatC”>这里的NOTfloatC其实不希望持续平移,而是希望往下排.这段代码在IE中毫无问题,问题出在火狐浏览器.原因是NOTfloatC并不是float标签,必须将float标签闭合.在 <#div class=”floatB”><#div class=”NOTfloatC”>之间加上 <#div class=”clear”>这个div一定要注意声明位置,一定要放在最恰当的地方,并且必须与两个具有float属性的div同级,之间不克不及存在嵌套关系,不然会产生异常.并且将clear这种样式定义为为如下便可: .clear{clear:both;}此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性,用zoom:1;可以做到,这样就达到了兼容.例如某一个wrapper如下定义: .colwrapper{overflow:hidden;zoom:1;margin:5px auto;}2、margin加倍的问题设置为float的div在ie下设置的margin会加倍.这是一个ie6都存在的bug.解决计划是在这个div里面加上display:inline;例如:<#div id=”imfloat”>相应的css为#IamFloat{float:left;margin:5px;/*IE下理解为10px*/display:inline;/*IE下再理解为5px*/}3、关于容器的包涵关系良多时候,尤其是容器内有平行计划,例如两、三个float的div时,宽度很容易出现问题.在IE中,外层的宽度会被内层更宽的div挤破.一定要用Photoshop或Firework量取像素级的精度.4、关于高度的问题如果是动态地添加内容,高度最好不要定义.浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好.(似乎有时候不会自动往下撑开,。
ie浏览器功能IE浏览器(Internet Explorer)是微软公司开发的一款网页浏览器,自1995年首次发布以来,成为最受欢迎和最广泛使用的浏览器之一。
IE浏览器具有许多强大的功能,以下是其中一些重要的功能:1. 网页浏览:IE浏览器可以加载和显示网页,支持HTML、CSS、JavaScript等网页技术,能够显示丰富的网页内容。
2. 书签管理:IE浏览器允许用户创建和管理书签,用户可以将经常访问的网页添加到书签中,方便下次快速打开。
3. 隐私保护:IE浏览器提供隐私保护功能,例如隐私浏览模式(InPrivate Browsing),可以在不留下浏览记录的情况下浏览网页。
4. 扩展插件:IE浏览器支持插件扩展,用户可以通过安装插件来增加浏览器的功能,例如广告拦截插件、下载管理插件等。
5. 安全性:IE浏览器具有一系列安全功能,包括防止恶意软件的SmartScreen过滤器和安全区域设置等,以保护用户免受恶意网站和下载的威胁。
6. 多标签浏览:IE浏览器支持多标签浏览,用户可以在同一个窗口中打开多个网页,并通过标签进行切换,提高浏览效率。
7. 自动完成:IE浏览器具有自动填充表单的功能,可以记住用户的用户名和密码等个人信息,方便用户在下次访问时自动填充。
8. 网页打印:IE浏览器允许用户将网页内容打印出来,可以选择打印范围、页面布局和打印设置等。
9. 开发者工具:IE浏览器内置了一些开发者工具,如DOM Explorer、网络分析器等,方便开发者进行网页调试和优化。
10. 兼容性支持:IE浏览器具有良好的兼容性,可以正常显示大多数网页内容,尤其是一些老旧的网页或基于IE内核的网页。
总而言之,IE浏览器是一款功能强大且稳定的网页浏览器,具有丰富的功能和良好的兼容性,适用于各种不同的网络浏览需求。
css总结笔记
CSS 是层叠样式表的缩写,是一种用于设计和布局网页的编程语言。
以下是CSS 总结笔记的全文:
一、CSS 的概述
CSS 用于设计和布局网页,可以让网页变得更加生动、美观和易读。
CSS 可以用于网页的头部、主体和底部,以及用于网页的各个部分。
二、CSS 的语法
CSS 的语法包括选择器、属性和值等。
选择器用于选择网页中的元素,属性和值用于设置元素的样式。
三、CSS 的样式
CSS 的样式包括颜色、字体、大小、边框、背景等。
通过设置这些样式,可以让网页变得更加美观。
四、CSS 的应用场景
CSS 的应用场景包括网页的布局、元素的样式设置和网页的颜色搭配等。
通过使用 CSS,可以让网页变得更加生动、美观和易读。
五、CSS 的兼容性
CSS 在不同的浏览器中有不同的兼容性问题。
为了解决这个问题,可以使用CSS 的媒体查询和伪元素等方法。
六、CSS 的优化
CSS 的优化可以提高网页的加载速度和用户体验。
可以通过减少重排、减少重写和压缩 CSS 等方式进行优化。
七、CSS 的拓展
CSS 还有很多拓展功能,如响应式设计、动画效果、Web 组件等。
通过使用CSS,可以让网页变得更加生动、美观和易读。
八、CSS 的总结
CSS 是网页设计中不可或缺的一部分。
通过使用 CSS,可以让网页变得更加生动、美观和易读。
在学习 CSS 时,需要熟练掌握语法、样式和应用场景,并了解 CSS 的兼容性和拓展功能。
html与css基础试题Doctype的作⽤? 严格模式和混杂模式的区分,以及如何触发这2种模式?<!DOCTYPE> 声明位于⽂档中的最前⾯,处于 <html> 标签之前。
告知浏览器的解析器,⽤什么⽂档类型规范来解析这个⽂档。
DOCTYPE不存在或格式不正确会导致⽂档以混杂模式呈现。
严格模式就是浏览器根据web标准去解析页⾯,是⼀种要求严格的DTD,不允许使⽤任何表现层的语法,混杂模式是⼀种向后兼容的解析⽅法。
触发标准模式或者说严格模式很简单,就是Html前申明正确的DTD,出发混杂模式可以在html⽂档开始不声明DTD,或者在DOCTYPE前加⼊XML声明浏览器标准模式和怪异模式之间的区别是什么?这是个历史遗留问题,W3C标准推出前,旧的页⾯都是根据旧的渲染⽅式对页⾯进⾏渲染的,因此在W3C标准推出后为了保证旧页⾯的正常显⽰,保持浏览器的兼容性,这样浏览器上就产⽣了能够兼容W3C标准渲染的严格模式和保证旧页⾯显⽰的怪异模式的标准兼容模式。
具体表现:1.在严格模式中:width是内容宽度,元素真正的宽度 = margin⼀left + border⼀left⼀width + padding⼀left + width + padding⼀right + border⼀right⼀ width + margin⼀right;在怪异模式中:width则是元素的实际宽度,内容宽度 = width ⼀ ( padding⼀left + padding⼀right + border⼀left⼀width + border⼀right⼀width)2)可以设置⾏内元素的⾼宽在标准模式下,给span等⾏内元素设置wdith和height都不会⽣效,⽽在怪异模式下,则会⽣效。
3)可设置百分⽐的⾼度在标准模式下,⼀个元素的⾼度是由其包含的内容来决定的,如果⽗元素没有设置⾼度,⼦元素设置⼀个百分⽐的⾼度是⽆效的。
CSS设置DIV垂直居中的N种⽅法兼容IE浏览器在说到这个问题的时候,也许有⼈会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不⽀持我只需做少许的CSS Hack技术就可以啊!所以在这⾥我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才⽣效,例如表格元素中的<td>、<th>、<caption>等,⽽像<div>、<span>这样的元素是没有valign特性的,因此使⽤vertical-align对它们不起作⽤。
Tips: 完美解决⽅案在⽂末!⼀、单⾏垂直居中如果⼀个容器中只有⼀⾏⽂字,对它实现居中相对⽐较简单,我们只需要设置它的实际⾼度height和所在⾏的⾼度line-height 相等即可。
如:XML/HTML Code复制内容到剪贴板1. div {2. height:25px;3. line-height:25px;4. overflow:hidden;5. }6.这段代码很简,后⾯使⽤overflow:hidden的设置是为了防⽌内容超出容器或者产⽣⾃动换⾏,这样就达不到垂直居中效果了。
XML/HTML Code复制内容到剪贴板1. <html>2. <head>3. <title> 单⾏⽂字实现垂直居中 </title>4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />5. <style type="text/css">6. body { font-size:12px;font-family:tahoma;}7. div {8. height:25px;9. line-height:25px;10. border:1px solid #FF0099;11. background-color:#FFCCFF;12. }13.14. </style>15. </head>16. <body>17.18. <div>现在我们要使这段⽂字垂直居中显⽰!</div>19. </body>20.21. </html>⼆、多⾏未知⾼度⽂字的垂直居中如果⼀段内容,它的⾼度是可变的那么我们就可以使⽤上⼀节讲到的实现⽔平居中时使⽤到的最后⼀种⽅法,就是设定Padding,使上下的padding值相同即可。
CSS多浏览器兼容性问题及解决方案CSS多浏览器兼容性问题及解决方案兼容性处理要点1、DOCTYPE影响CSS处理2、FF:设置padding后,div会增加height和width,但IE不会,故需要用!important多设一个height和width3、FF:支持!important,IE则忽略,可用!important为FF特别设置样式4、div的垂直居中问题:vertical-align:middle;将行距增加到和整个DIV一样高line-height:200px;然后插入文字,就垂直居中了。
缺点是要控制内容不要换行5、在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不能写反,!important这个属性IE不能识别,但别的浏览器可以识别。
所以在IE下其实解释成这样:div{maring:30px;margin:28px}重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;浏览器差异1、ul和ol列表缩进问题消除ul、ol等列表的缩进时,样式应写成:list-style:none;margin:0px;padding:0px;其中margin属性对IE有效,padding属性对FireFox有效。
[注]经验证,在IE中,设置margin:0px可以去除列表的上下左右缩进、空白以及列表编号或圆点,设置padding对样式没有影响;在Firefox中,设置margin:0px仅仅可以去除上下的空白,设置padding:0px后仅仅可以去掉左右缩进,还必须设置list-style:none 才能去除列表编号或圆点。
也就是说,在IE中仅仅设置margin:0px 即可达到最终效果,而在Firefox中必须同时设置margin:0px、padding:0px以及list-style:none三项才能达到最终效果。
查看文章zzdiv+css - Firefox和IE浏览器兼容问题 - padding-right在IE6下导致抖动2008-01-11 1733由于IE6的盒模型计算缺陷,padding-right在特定的情况会下导致抖动。
[出现抖动的代码]最近在写一个Div+Css布局的网站首页,以前写的页面都统一width900px;不存在什么布局呀什么float的设置。
现在没办法呀!要对页面进行切割,分块。
幸好,有点css的基础,不过用起来就比较郁闷了。
在ie和firefox下,相同的属性值往往会有不同的显示效果。
没办法要兼容浏览器只得一个一个bug去找。
但完全兼容浏览器是无法做到的,所以也只能将个大概的效果展示出来,不要偏差太大太明显就行。
首先,需要提出的是float这个浮动属性,这是div+css布局的关键所在。
floatleft;floatright;是常用的浮动属性。
为了使div能在一行排列,不得补用到它们。
呵呵!不就是个float吗?这有什么好提的,要浮动我就float一下呀。
哎!话是这么说,但真正用到时却出问题了。
在ie下,只要前一个div有floatleft;后面的div宽度不超过(总body的宽度)-(前一个div的宽度),后面的div就自动浮动,并排列在同一行。
ie和firefox 下,这点效果是一样。
好,接着往下,下一行也这样布局,就分两栏吧。
style type=textcss#div1{}{width200px;height80px;floatleft;border1px solid blue;}#div2{}{width600px;height80px;border1px solid blue;}styledivdiv id=div1divdiv id=div2divdivdiv style=clearboth;margin-top20px; id=div3div这样的布局,在ie下和火狐下的显示效果就不同了在firefox下的margin-top20px;没效果。
css的定义和使用方法CSS的定义和使用什么是CSSCSS,全称为”层叠样式表”(Cascading Style Sheets),是一种用来描述网页(HTML文档)样式的标记语言。
它可以控制网页中的布局、字体、颜色、背景等各个方面的样式,使得网页的外观更加美观和易于独立调整。
CSS的引入方式CSS可以通过以下几种方式引入页面:1.内联样式:直接在HTML标签的style属性中编写CSS代码,例如:<p style="color: red;">这是一段红色文字。
</ p>2.内部样式表:将CSS代码写在<style>标签中,放在HTML文档的<head>区域中,例如:<head><style>p {color: red;}</style></head><body><p>这是一段红色文字。
</p></body>3.外部样式表:将CSS代码写在一个独立的CSS文件中,通过<link>标签引入,例如:<head><link rel="stylesheet" href=""></head><body><p>这是一段红色文字。
</p></body>:p {color: red;}CSS选择器CSS选择器用于选择HTML中的元素,并为其应用样式。
常用的选择器有:•标签选择器:通过标签名选择元素,例如p选择所有的段落()。
•类选择器:通过类名选择元素,以点号开头,例如.red选择所有具有class="red"的元素。
•ID选择器:通过ID选择元素,以井号开头,例如#header选择具有id="header"的元素。
最全的CSS浏览器兼容问题整理(IE6.0、IE7.0 与FireFox)CSS 对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响CSS 处理,作为W3C的标准,一定要加DOCTYPE声明.CSS技巧1.div的垂直居中问题vertical-align:middle; 将行距增加到和整个DIV一样高line-height:200px; 然后插入文字,就垂直居中了。
缺点是要控制内容不要换行2. margin加倍的问题设置为float的div在ie下设置的margin会加倍。
这是一个ie6都存在的bug。
解决方案是在这个div里面加上display:inline;例如:<#div id=”imfloat”>相应的css为#IamFloat{float:left;margin:5px;/*IE下理解为10px*/display:inline;/*IE下再理解为5px*/}3.浮动ie产生的双倍距离#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离display:inline; //使浮动忽略}这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline 元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);#box{ display:block; //可以为内嵌元素模拟为块元素display:inline; //实现同一行排列的效果diplay:table;4 IE与宽度和高度的问题IE 不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。
css after用法在过去,设计师和开发者们在实现一些特定效果时,往往会选择使用JavaScript 或者图片来实现。
但随着CSS 技术的不断发展,现在我们可以通过CSS 中的After 属性来实现这些效果,提高了代码的可读性和实用性。
本文将详细介绍CSS After 用法、应用场景以及注意事项。
一、CSS After 概念与原理CSS After 属性,顾名思义,就是在某个元素的后方插入一个新元素。
这个新元素可以是一个虚拟的元素,它的外观和位置由CSS 控制。
After 属性会将这个虚拟元素应用到指定元素的后方,从而实现一些特定的视觉效果。
二、CSS After 用法示例假设我们有一个按钮元素,希望在其点击后出现一个提示信息。
我们可以使用CSS After 属性来实现这个效果:```cssbutton {background-color: blue;color: white;padding: 10px 20px;cursor: pointer;}button::after {content: "点击按钮";position: relative;top: 10px;background-color: red;padding: 5px 10px;margin-left: 10px;}```在这个示例中,我们为按钮元素设置了一个红色的小提示信息。
当用户点击按钮后,这个提示信息就会显示在按钮上方。
三、CSS After 应用场景与优势1.应用场景:CSS After 属性适用于需要实现动态效果、提示信息、加载动画等场景。
通过使用CSS After,我们可以避免使用JavaScript 或其他复杂代码,提高代码的可维护性。
2.优势:CSS After 属性具有以下优势:- 提高代码可读性:使用CSS 实现动态效果,降低了JavaScript 代码的复杂性。
- 跨浏览器兼容性:CSS After 属性在主流浏览器中均能得到良好支持。
IE6-IE11兼容性问题列表及解决办法2015/3/2 Bob Liu名目概述3第一章:HTML 4第一节:IE7-IE8更新41. 如果缺少终止标记的P 元素后跟TABLE、FORM、NOFRAMES 或NOSCRIPT 元素,会自动添加终止标记。
42. 支持格式正确的有效标记,不再支持格式错误的HTML。
63. Button标签的默认type类型从button改为submit。
74. 不再支持COL 及COLGROUP 元素的部分属性及为其设定的CS S 特性. 8第二节: IE8-IE9更新91. 表对象模式现在更加符合其他扫瞄器。
92. 文本布局使用自然度量而不是图形设备接口(GDI) 度量。
12第二章:CSS 15第一节:IE6-IE7更新151. 方框模型溢出内容现与方框相交,不再让方框自动增长适应内容。
152. 不再支持某些CSS 选择器(如*HTML、_underscore 和/**/ 注释)。
173. 已解决SELECT 元素不能被div覆盖的咨询题。
214. CSS样式区分大小写。
225.Style中的height, width结尾需要输入单位,如px 23第二节:IE7-IE8更新231. 不再支持CSS 表达式,改为支持增强的CSS 或DHTML 逻辑。
23第三节:IE8-IE9更新251. 泰语和东亚语文本和字体大小的显示可能小于其他字样。
252. 某些行为连接方法在XML 模式中不可用。
26第四节:IE9-IE10更新281. 不再支持CSS behavior,完全废弃htc表达式。
28第三章:Javascript and DOM 29第一节:IE6-IE7更新291. 不再承诺用于绕过window.close 提示的window.opener 技巧。
2 92. 从脚本创建的模式或无模式对话框看起来看起来略微变大。
30第二节:IE7-IE8更新311. 支持“class”语法,不再支持“className”属性语法。
CSS书写和CSS HACK技巧分享不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSSHack来解决浏览器局部的兼容性问题。
而这个针对不同的浏览器写不同的CSS 代码的过程,就叫CSS Hack。
CSS Hack常见的有三种形式:CSS属性Hack、CSS选择符Hack以及IE条件注释Hack,Hack主要针对IE浏览器。
1、属性级Hack:比如IE6能识别下划线”_”和星号”* “,IE7能识别星号”*“,但不能识别下划线”_”,而firefox两个都不能认识。
2、选择符级Hack:比如IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html.class{}。
3、IE条件注释Hack:IE条件注释是微软从IE5开始就提供的一种非标准逻辑语句。
比如针对所有IE:,针对IE6及以下版本:,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都PS:条件注释只有在IE浏览器下才能执行,这个代码在非IE 浏览下被当做注释视而不见。
可以通过IE条件注释载入不同的CSS、JS、HTML和服务器代码等。
不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,MozillaFirefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。
这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。
这个针对不同的浏览器写不同的CSScode的过程,就叫CSS hack,也叫写CSS hack。
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。
我们就可以根据这个来针对不同的浏览器来写不同的CSS。
比如IE6能识别下划线“_”和星号“* ”,IE7能识别星号“* ”,但不能识别下划线“_”,而firefox两个都不能认识。
DIV和CSS总结IE6下,DIV容器和padding之和,是DIV所占区域的总宽度(IE8时DIV容器所占区域总宽度不需要计算padding)真实宽度=width+padding+border+margin!important强调声明前面的语句有效性。
比如设置了:padding:0px!important;padding:10px;后面的重要性就不如前面带声明的!一、设置为float的div在IE6下margin会加倍解决方法一:是在这个div里面加上display:inline。
但是会导致内容区域的第一行文字出现缩进,和之后的行不对齐,应该再加一层div解决如:<#div id="imfloat"> 相应的css为#imfloat{float:left; margin:5px; /*IE下理解为10px*/ display:inline; /*IE下再理解为5px*/}解决方法二:通过!important这样的手段hack。
(这里面有3种形式)第一种:.div { background:orange;/*ff*/*background:green !important;/*ie7*/*background:blue; /*ie6*/ }第二种:.div { margin:10px;/*ff*/*margin:15px;/*ie7*/_margin:15px;/*ie6*/ }第三种:#div { color: #333; } /* ff */* html #div { color: #666; } /* IE6 */*+html #div { color: #999; } /* IE7 */二、IE6和IE8下的导航菜单有时候鼠标放上,IE8会有背景色而IE6没有,这时候要给区域加上高度和宽度,试试height:auto;width:88px二、在google、IE8、Firefox中margin-top的兼容在这些浏览器中,有两个嵌套关系的div,如果外层div的父元素padding值为0,那么内层div的margin-top或者margin-bottom的值会“转移”给外层div。
css兼容性写法⼤全常见的浏览器内核引擎以及具体应⽤:Trident: IE;Gecko: Firefox;webkit: Safari,Google Chrome,遨游3,猎豹,百度;Presto:Opera——Opera mini书写顺序:firefox,IE8,IE7,IE6IE6:*,_IE7:*,+IE8:\9,\0chrome:-webkit-firefox:-moz-,root(仅ff认)*和_ , ie6可以识别;* , ie6,ie7可以识别;!important ,表⽰⾼优先级,ie7及以上,firefox都⽀持,ie6认识带!important的样式属性,但不认识!important的优先级;-webkit- ,针对safari,chrome浏览器的内核CSS写法-moz-,针对firefox浏览器的内核CSS写法-ms-,针对ie内核的CSS写法-o-,针对Opera内核的CSS写法如果只让ie6看见⽤ *html .head{color:#000;} 如果只让ie7看见⽤ *+html .head{color:#000;} 如果只让ff看见⽤: root body .head{color:#000;} 如果只让ff、IE8看见⽤ html>/**/body .head{color:#000;} 如果只是不让ie6看见⽤ html>body .head{color:#000;} 即对IE 6⽆效 如果只是不让ff、IE8看见⽤ *body .head{color:#000;} 即对ff、IE8⽆效1. .div1{2. *position:relative;3. -moz-background-size:50%;4. -ms-content-zoom-limit-max:50%;5. -o-box-shadow:5px10px20px#f0f;6. }7. .div2{8. position:absoulte!important;9. }第⼀问:宽度问题给div⼀个 width:300px;padding:10px;Firefox实际宽度320px,padding是填上去的;⽀持!important,IE忽略IE6实际宽300px,padding是300px⾥⾯的,把content往⾥⾯挤;页⾯的最⼩宽度IE不认得min-,⽽它实际上把 width当做最⼩宽度来使。
CSS在Internet Explorer 6, 7 和8中的差别关于浏览器的最离奇的统计结果之一就是Internet Explorer 版本6,7和8共存。
截至本文,Internet Explorer各个版本总共占据了大约65%的市场份额。
在网站开发社区,这个数字要小很多,统计显示大概只有40%。
这些统计中比较有趣的部分是,IE6、IE7、IE8之间的数值很接近,这防止了单个Microsoft的浏览器占居统治地位——与过去的情况相反。
根据这些令人遗憾的统计结果,在为客户开发网站的时候开发人员对所有当前使用的IE浏览器做全面的测试是必要的,而且这样在个人项目上也可以拉拢更多的用户。
多谢那些JavaScript库(框架),跨浏览器的Javascript的测试已经像当前形势所允许的那样接近完美了。
但在CSS开发中还不是这样,特别是关系到IE目前存在的三个版本。
本文尝试为希望了解CSS对IE6、IE7、IE8的支持的不同的开发者提供一份详细的、易用的参考。
本参考包含以下情况的概述和兼容情况:A、三个浏览器中的一个支持而另外两个不支持的条目B、三个浏览器中的两个支持而另外一个不支持的条目本文不讨论:A、三个浏览器都不支持的条目B、私有属性因此,本文的中心是三个浏览器中的不同,而不是必要的支持缺陷。
该列表被分为以下五个部分:1、选择器与继承2、伪类与伪元素3、属性支持4、其它各种技术5、重要bug和不兼容问题1、选择器与继承A、子选择器示例body > p {color: #fff;}描述子选择器选择一个特定父级元素的所有直接子级元素,在上面的例子中,body是父元素,p是子元素。
支持情况IE6 NoIE7 YesIE8 YesBugsIE7中,如果在父级标签和子级标签之间有一个HTML注释,子选择器将不会工作。
B、链类示例.class1.class2.class3 {background: #fff;}描述链类用于送一个HTML元素有多个class声明的情况,就像这样:<div class="class1 class2 class3"><p>Content here.</p></div>支持情况IE6 NoIE7 YesIE8 YesBugsIE6好像支持这种情况,因为它能匹配链中的最后一个class到使用该class的元素上,然而,它并不能限制一个使用链中所有class的元素。
C、属性选择器示例a[href] {color: #0f0;}描述该选择器允许一个元素被定位只要它有指定的属性。
在上面的例子中,所有的带有href 属性的a标签都会被限定,而没有href属性的a标签不会被限定。
支持情况IE6 NoIE7 YesIE8 YesD、临近兄弟选择器示例h1+p {color: #f00;}描述该选择器定位临近到指定元素的兄弟标签。
上面的例子将会限定p标签,但是他必须是h1标签的兄弟而且要直接尾随在h1标签的后面。
比如:<h1>heading</h1><p>Content here.</p><p>Content here.</p>在上面的代码中,CSS样式将只对第一个p有效。
因为它是h1的兄弟而且紧跟着h1。
第二个p也是h1的一个兄弟,但是它没有紧跟着h1。
支持情况IE6 NoIE7 YesIE8 YesBugs在IE7中,如果在兄弟之间有一个HTML注释,临近兄弟选择器将无效。
E、普通兄弟选择器示例h1~p {color: #f00;}描述该选择器定位一个指定元素后面的所有兄弟元素。
将此选择器应用到上面的那个例子,将会对两个p标签都有效。
当然,如果有一个p元素出现在h1之前,那个p元素不会被匹配。
支持情况IE6 NoIE7 YesIE8 Yes2、伪类和伪元素A、:hover后面的后代选择器示例a:hover span {color: #0f0;}描述一个元素可以被:hover伪类后面的选择器定位,就像后代选择器一样。
上面的例子,在鼠标悬停的时候,将会改变a元素内的span元素中的文字的颜色。
支持情况IE6 NoIE7 YesIE8 YesB、链伪类示例a:first-child:hover {color: #0f0;}描述伪类可以链起来以缩小元素选择。
上面的例子会定位每一个父级元素下的第一个a标签,并将hover伪类P应用到它上。
支持情况IE6 NoIE7 YesIE8 YesC、非锚点元素中的:hover示例div:hover {color: #f00;}描述:hover伪类可以应用到任何元素的悬停状态,而不只是a标签。
支持情况IE6 NoIE7 YesIE8 YesD、:first-child伪类示例div li:first-child {background: blue;}描述改伪类定位每一个指定的元素的父级元素的第一个子元素。
支持情况IE6 NoIE7 YesIE8 YesBugsIE7中,如果要定位的第一个子元素之前有HTML注释,first-child伪类将会无效。
E、:focus伪类示例a:focus {border: 1px solid red;}描述该伪类定位有键盘焦点的所有元素。
支持情况IE6 NoIE7 NoIE8 YesF、:before 和:after 伪类示例#box:before {content: "本段文字在盒子前面";}#box:after {content: "本段文字在盒子后面";}描述这两个伪元素分别在指定元素的前面和后面添加生成的内容,结合content属性一起使用。
支持情况IE6 NoIE7 NoIE8 Yes3、属性支持A、由position产生的实际大小示例#box {position: absolute;top: 0;right: 100px;left: 0;bottom: 200px;background: blue;}描述定义top, right, bottom, 和left 值到绝对定位的元素上将给这个元素实际的大小(宽度和高度),虽然并没有设定使宽度和高度值。
支持情况IE6 NoIE7 YesIE8 YesB、Min-Height 与Min-Width#box {min-height: 500px;min-width: 300px;}描述这两个属性分别指定元素的宽和高的最小值,允许一个盒子可以比指定的最小值更大,但是不能更小。
它们两个可以一起使用,也可以分开来用。
支持情况IE6 NoIE7 YesIE8 YesC、Max-Height 和Max-Width示例#box {max-height: 500px;max-width: 300px;}这两个属性分别指定元素的高和宽的最大值,允许一个盒子比这个指定的最大值小,但是不能更大。
它们也可以同时使用或者单独使用。
支持情况IE6 NoIE7 YesIE8 YesD、透明边框颜色示例#box {border: solid 1px transparent;}描述一个透明的边框色允许一个边框和边框色可见(或者不透明)时占用一样的空间。
支持情况IE6 NoIE7 YesIE8 YesE、固定位置元素示例#box {position: fixed;}描述position属性的这个值允许一个元素绝对的相对于窗口定位。
支持情况IE6 NoIE7 YesIE8 YesF、固定位置的背景图示例#box {background-image: url(images/bg.jpg);background-position: 0 0;background-attachment: fixed;}描述background-attachment属性的值为fixed允许一个背景图片绝对地相对于窗口定位。
支持情况IE6 NoIE7 YesIE8 YesBugs就像position:fixed一样,IE6同样不支持background-positon的fixed值。
然而,在IE6中只有在这个值用于根元素的时候才有效。
G、属性值“inherit”示例#box {display: inherit;}描述将值inherit 应用到一个属性那个允许一个元素从它的包含元素继承计算的值。
支持情况IE6 NoIE7 NoIE8 YesBugsIE6 和IE7 不支持inherit 值除了direction 和visibility 属性。
H、表格单元的边框空白示例table td {border-spacing: 3px;}描述该属性设置相邻的表格单元的边框之间的空白。
支持情况IE6 NoIE7 NoIE8 YesI、在表格中渲染空单元格示例table {empty-cells: show;}描述该属性,只应用于元素的display属性被设置为table-cell的元素,允许空单元格渲染他们的边框和背景。
否则,它们将不可见。
支持情况IE6 NoIE7 NoIE8 YesJ、表格标题的水平位置示例table {caption-side: bottom;}描述这个属性允许将一个表格的标题放到表格的底部——默认是头部。
支持情况IE6 NoIE7 NoIE8 YesK、修剪区域示例#box {clip:rect(20px, 300px, 200px, 100px)}描述该属性指定一个盒子的一个区域可见,剩下的部分修剪掉,或者不可见。
支持情况IE6 NoIE7 NoIE8 YesBugs有趣的是,该如果不使用隔开各个值的逗号,IE6和IE7也可以用这个属性。
(比如,使用空格隔开剪切的值。
)L、打印页面中的orphanes和widows示例p {orphans: 4;}p {widows: 4;}描述orphans属性设定在打印页面底部显示的最少行数。
而widows 属性用来设定打印页面头部至少显示的段落的行数。
支持情况IE6 NoIE7 NoIE8 YesM、盒子内的页面分割示例#box {page-break-inside: avoid;}描述该属性设定分页是否发生在一个指定元素内。
支持情况IE6 NoIE7 NoIE8 YesN、Outline 属性示例#box {outline: solid 1px red;}描述outline 是outline-style, outline-width, 和outline-color的缩写。
该属性要优于border 属性,因为它不会影响文档流,因而u更有助于调试布局问题。
支持情况IE6 NoIE7 NoIE8 YesO、display属性的替代值示例#box {display: inline-block;}描述display 属性通常设置为block, inline, 或none。