码迷,mamicode.com
首页 > Web开发 > 详细

CSS HACK

时间:2016-05-13 04:40:50      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

欢迎访文我的博客YangChen’s Blog

这次说一下css的hack

前两天出来个新闻,淘宝将不再支持ie6、7。不得不说这是一个非常好的消息,为web开发行业树立了一个标杆,让我们众多前端开发工程狮们不用再为ie6、7来抓狂了。而且随着移动互联网开发的蓬勃发展,再加上各种前端开发工具和框架的出现,web的开发环境也是越来越好,很多曾经pc端开发时慎用的css3的属性在开发中也能够放肆的使用,从而提高开发的质量和效率。但是这并不意味着css hack就可以退出历史的舞台了,因为不同浏览器也有hack,而且ie8、9也是要支持的嘛。

什么是css hack?

引用下百度百科的定义

CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。

简单点说就是通过css hack可以让不同版本的浏览器有不同的样式,可以运用它来为不同的浏览器制定不同的样式,也可以运用它来解决浏览器的兼容性问题

为什么会有css hack?

这个说起来就长了,具体可以参考下其他相关书籍,但总的来主要是由于浏览器大战导致的。第一次浏览器大战发生在上个世纪90年代,是微软的IE浏览器,和网景公司的Netscape Navigator,这次大战的结果是ie获胜,最后网景将公司卖给AOL一走了之。这次大战确立JavaScript在浏览器的绝对统治地位,另外也推动了web开发标准化的进程,这次大战也可以说是一次标准大战。第二次大战从04年firefox的推出一直到现在,这次大战的特点是一些新的基于不同引擎的浏览器也加入了阵营,例如Opera Chrome 等等,这次大战可以说是一次内核大战,这次大战的结果胜负未出,但是已经有了一些共识,例如chrome是js运行最快的浏览器,Nodejs用的就是Chrome的V8引擎,还有IE最不受开发者欢迎,因为有很多独立的api而且自己运行也慢,这告诉我们没有实力就不要搞特殊。

css hack情况介绍

下面就是主题了,有哪些css hack和怎么用?这里按照以下几个方面来区分。

1、区别IE和非IE浏览器

#tip{ 
    background:blue; /*非IE背景蓝色  因为所有浏览器都能解释*/ 
    background:red\9; /*IE6、IE7、IE8、IE9背景紅色 因为\9在IE6.7.8.9中可以识别,覆盖上面样式 IE10跟11应该不识别,IE11测试确定*/ 
} 

2、IE浏览器下的hack

element{
    color:#666\9//IE8 IE9
    * color:#999//IE7
    _color:#EBEBEB//IE6
}
//若要区分IE8 和IE9可以使用伪类来识别
:root element{color:#666\9;}//IE9
//:root”伪类IE系列只有IE9支持,其他主流浏览器均支持,利用这一点来区分IE8和IE9。另外考虑到opera部分支持,完全支持:root,所以不使用。

3、其他主流浏览器css hack

1.Gecko内核,以Firefox为代表

//使用-moz-前缀
-moz-box-shadow: inset 0 -4px 0 #2a6496;

2.Webkit内核,以Chrome为代表

//使用-webkit-前缀
-webkit-box-shadow: inset 0 -4px 0 #2a6496;

3.Presto内核,以Opera为代表

//使用-O-前缀
-o-box-shadow: inset 0 -4px 0 #2a6496;

4.Trident内核,以IE 360等众国产浏览器为代表

//使用-ms-前缀
-ms-box-shadow: inset 0 -4px 0 #2a6496;

4、大汇总

.element{
    color:#000;             /*w3c标准*/
    [;color:#f00;];         /*Webkit(chrome和safari)*/
    color:#666\9;           /*IE8*/
    *color:#999;            /*IE7*/
    _color:#333;            /*IE6*/
}
-moz-box-shadow: inset 0 -4px 0 #2a6496;       /*Firefox*/
-webkit-box-shadow: inset 0 -4px 0 #2a6496;    /*Chrome*/
-o-box-shadow: inset 0 -4px 0 #2a6496;         /*Opera*/
-ms-box-shadow: inset 0 -4px 0 #2a6496;        /*IE*/

参考文章:CSS hack大全&详解(什么是CSS hack)

CSS HACK

标签:

原文地址:http://blog.csdn.net/yc123h/article/details/51337381

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!