开发笔记📐 发现👽 人物👮 趣闻💦
前端多浏览器环境下的兼容性:常见CSS HACK介绍

前端多浏览器环境下的兼容性:常见CSS HACK介绍
2018-06-20 10:10:30   点击:

CSS HACK

由于不同的浏览器,甚至同一浏览器的不同版本对CSS的解析认识不一样,导致生成的页面效果不一致,写出针对不同浏览器CSS code就称为CSS hack。

至少从内核来说,就存在Mozilla,Webkit和IE好几种。通常来说,CSS hack主要用于IE系列。只要使用IE的用户比例还有,各种情况下的CSS就依旧得考虑。

css hack又分为3种,即属性hack,IE条件注释hack,CSS选择器Hack

 

属性HACK/内部HACK

属性HACK记是记不住的,这辈子都不可能记住。不过只要你用好搜索,勤快一点积极做测试,那么它就不是什么拦路虎。

CSS 内部hack 语法: selector{?property:value?;}

.myClass{
background-color:#f1ee18;/*所有识别*/
background-color:#00deff\9;/*IE6、7、8、9、10识别,但是IE11不支持,亲测*/
background-color:#00deff\0;/*IE8、9、10、11识别,据说还有opera*/
background-color:#00deff\9\0;/*IE8、9、10识别*/
+background-color:#a200ff;/*IE6、7识别*/
*background-color:#a200ff;/*IE6、7识别*/
_background-color:#1e0bd1;/*IE6识别*/
}

CSS3目前标准还没有统一,各个浏览器都有自己的表现方式,甚至有的实现,有的未实现,在前面加一些前缀以表示支持某个特定浏览器,这也是CSS 内部hack的基本原理,向上面这些简单易懂,但是真正的CSS hack 远远不止于此,因为有不死的IE6及其各种奇葩的兄弟版本。

/*Mozilla内核浏览器:firefox3.5+*/
  -moz-transform: rotate | scale | skew | translate ;
 /*Webkit内核浏览器:Safari and Chrome*/
  -webkit-transform: rotate | scale | skew | translate ;
 /*Opera*/
  -o-transform: rotate | scale | skew | translate ;
 /*IE9*/
  -ms-transform: rotate | scale | skew | translate ;
 /*W3C标准*/
  transform: rotate | scale | skew | translate ;

 

去除Safari和苹果系统下的按钮等样式:

input[type=button], input[type=submit], input[type=file], button { cursor: pointer; -webkit-appearance: none; }  

-webkit-tap-highlight-color:这个属性只用于iOS (iPhone和iPad)。当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背景。要重设这个表现,你可以设置-webkit-tap-highlight-color为任何颜色。

想要禁用这个高亮,设置颜色的alpha值为0即可。

-webkit-tap-highlight-color: rgba(0, 0, 0, 0);  

 

条件注释HACK/HTML头部引用

类似于程序语句,只能使用在HTML文件里,而不能在CSS文件中使用,并且只有在IE浏览器下才能执行,这个代码在非IE浏览下非单不是执行该条件下的定义,而是当做注释视而不见。

lte:就是Less than or equal to的简写,也就是小于或等于的意思。

lt :就是Less than的简写,也就是小于的意思。

gte:就是Greater than or equal to的简写,也就是大于或等于的意思。

gt :就是Greater than的简写,也就是大于的意思。

! :就是不等于的意思,跟javascript里的不等于判断符相同。

 

选择器HACK

选择器hack主要是针对IE浏览器,其实并不怎么常用,语法是这样的: selector{ sRules }

  IE6 IE7 IE8 IE9 IE10 现代浏览器
*html GOOD          
*+html   GOOD        
:root       GOOD    

例如,针对IE9的hack可以这么写 

:root .test
{
    background-color:green;
}

 

书写顺序

因为CSS只要是同一级别,出现重复属性设置,后出现的会覆盖前面出现的,所以在书写的时候一般把识别能力强的写前面,看个例子:

background-color:green;

_background-color:red;

 DIV在IE6上是红色,其它是绿色。

总结来说:先做一般配置,再做特殊配置,以在特殊情况下,能够覆盖掉一般配置。

 

各游览器常用兼容标记一览表

标记 IE6 IE7 IE8 FF Opera Sarari
[*+><] X X X X
_ X X X X X
\9 X X X
\0 X X X X
@media screen and (-webkit-min-device-pixel-ratio:0){.bb {}} X X X X X
.bb , x:-moz-any-link, x:default X X √(ff3.5及以下) X X
@-moz-document url-prefix(){.bb{}} X X X X X
@media all and (min-width: 0px){.bb {}} X X X
* +html .bb {} X X X X X
游览器内核 Trident Trident Trident Gecko Presto WebKit

CSS 前端 兼容

上一篇:PhpcmsV9后台皮肤MunSkin推荐 优秀体验不二之选
下一篇:知己知彼百战不殆:伪造IP的原理 谨防流量诈骗