首页  >  文章  >  web前端  >  css兼容性写法的实例讲解

css兼容性写法的实例讲解

零下一度
零下一度原创
2017-06-24 13:56:021149浏览

常见的浏览器内核引擎以及具体应用:

     Trident: IE;
     Gecko: Firefox;
     webkit: Safari,Google Chrome,遨游3,猎豹,百度;
     Presto:Opera——Opera mini
 
书写顺序:firefox,IE8,IE7,IE6
 
IE6:*,_
IE7:*,+
IE8:\9,\0
 
chrome:-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. <span class="pun">.<span class="pln">div1<span class="pun">{</span></span></span>

  2. <span class="pun">*<span class="pln">position<span class="pun">:<span class="pln">relative<span class="pun">;</span></span></span></span></span>

  3. <span class="pun">-<span class="pln">moz<span class="pun">-<span class="pln">background<span class="pun">-<span class="pln">size<span class="pun">:<span class="lit">50<span class="pun">%;</span></span></span></span></span></span></span></span></span>

  4. <span class="pun">-<span class="pln">ms<span class="pun">-<span class="pln">content<span class="pun">-<span class="pln">zoom<span class="pun">-<span class="pln">limit<span class="pun">-<span class="pln">max<span class="pun">:<span class="lit">50<span class="pun">%;</span></span></span></span></span></span></span></span></span></span></span></span></span>

  5. <span class="pun">-<span class="pln">o<span class="pun">-<span class="pln">box<span class="pun">-<span class="pln">shadow<span class="pun">:<span class="lit">5px<span class="lit">10px<span class="lit">20px<span class="com">#f0f;</span></span></span></span></span></span></span></span></span></span></span>

  6. }

  7. <span class="pun">.<span class="pln">div2<span class="pun">{</span></span></span>

  8. <span class="pln">position<span class="pun">:<span class="pln">absoulte<span class="pun">!<span class="pln">important<span class="pun">;</span></span></span></span></span></span>

  9. }

 <br/>
 
第一问:宽度问题
给div一个 width:300px;padding:10px;
Firefox实际宽度320px,padding是填上去的;支持!important,IE忽略
IE6实际宽300px,padding是300px里面的,把content往里面挤;
 
页面的最小宽度 
IE不认得min-,而它实际上把 width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个dc6dce4a544fdca2df29d5ac0ea9906b 放到 6c04bd5ca3fcae76e30b72ad730ca86d 标签下,然后为div指定一个类,然后CSS这样设计: 
#container{ min-width: 600px; width:expression(document.body.clientWidth a018d5671f9bded293a374dbb8fce83b 
815bedcdd60562fb96a6914c2d4f835716b28748ea4df4d9c2150843fecfba68 
81dd26831b075943dd4af1222eba6a0c16b28748ea4df4d9c2150843fecfba68 
16b28748ea4df4d9c2150843fecfba68 
 
IE捉迷藏的问题 
当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。 
有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。 解决办法:对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。
 
IE的layout私有属性
作为外部 wrapper 的 div 不要定死高度,为了让高度能自动适应,要在wrapper里面加上overflow:hidden; 当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。
.colwrapper{ overflow:hidden; zoom:1; margin:5px auto;} 
 
排版
我们用得最多的css描述可能就是float:left.有的时候我们需要在n栏的float div后面做一个统一的背景,譬如: 
e4acf4457cd2dcf6743269aee2ac6992 
c321ef1fa01b31fde2d6c964d94c349316b28748ea4df4d9c2150843fecfba68 
2e80957d70bf614c5390c2422aae5ab116b28748ea4df4d9c2150843fecfba68 
d12f819607ea571af65bb02cafd068f416b28748ea4df4d9c2150843fecfba68 
16b28748ea4df4d9c2150843fecfba68 
我们要将page的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right的向下拉长,而page居然保存高度不变,问题来了,原因在于page不是float属性,而我们的page由于要居中,不能设置成 float,所以我们给他加个父元素 page变成爷爷;
 
高度不适应 
高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用margin 或paddign 时。 
例: 
#box { } 
#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; } 
0cb0d37bd827c253db804f192a046bde 
e388a4556c0f65e1904146cc1a846beep对象中的内容94b3e26ee717c64999d7867364b1b4a3 
16b28748ea4df4d9c2150843fecfba68 
解决技巧:在P对象上下各加2个空的div对象CSS代码:.1{height:0px;overflow:hidden;}或者为DIV加上border属性。 
 
IE6下为什么图片下有空隙产生 
解决这个BUG的技巧也有很多,可以是改变html的排版,或者设置img 为display:block 或者设置vertical-align 属性为vertical-align:top   bottom  middle  text-bottom 都可以解决. 
 
IE的css bug 
在p:first-letter和{font-size:300%}加上空格,也就是p:first-letter {font-size:300%}后,显示就正常了。但是同样的代码,在FireFox下看是正常的。按道理说,p:first-letter{font-size:300%}的写法是没错的。那么问题出在哪里呢?答案是伪类中的连字符”-”。IE有个BUG,在处理伪类时,如果伪类的名称中带有连字符”-”,伪类名称后面就得跟一个空格,不然样式的定义就无效。而在FF中,加不加空格都可以正常处理。
 
div设置 margin-left, margin-right 为 auto 时已经居中,IE 不行,IE需要设定body居中,首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。
 
垂直居中=>内容换行问题

一个高30px的div,默认显示左上角,如果想垂直居中对其可以加个line-height:30px;样式。如果你想让他居下方则修改line-height

数值越大越下,为了防止撑破,还需要再给一个样式overflow:hidden; 

 

块级对象设置三个样式解决浏览器默认值:宽高overfl

LI中内容超过长度后以省略号显示的技巧 

此技巧适用与IE与OP浏览器

li { 

width:200px; 
white-space:nowrap; 
text-overflow:ellipsis; 
-o-text-overflow:ellipsis; 
overflow: hidden; 

为什么web标准中IE无法设置滚动条颜色了 
解决办法是将body换成html 

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; 

为什么无法定义1px左右高度的容器 
IE6下这个问题是因为默认的行高造成的,解决的技巧也有很多,例如:overflow:hidden   zoom:0.08   line-height:1px

css初始化
其中margin属性对IE有效,padding属性对FireFox有效。
  1. body,div,dl,dt,dd,ol,h1,h2,h3,h4,h5,h6,form,input,p,th,td{margin:0;padding:0;}  

  2. img{border:0px;}  

  3. ul {margin:0px;padding:0px;}/  

  4. ul li {list-style:none;} 

/* Clear Fix */ 
.clearfix:after { 
content:”.”; 
display:block; 
height:0; 
clear:both; 
visibility:hidden; 

.clearfix { 
display:inline-block; 

/* Hide from IE Mac */ 
.clearfix {display:block;} 
/* End hide from IE Mac */ 
/* end of clearfix */ 

或者这样设置:.hackbox{ display:table; //将对象作为块元素级的表格显示} 

 

太多了 参考:

以上是css兼容性写法的实例讲解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn