• 屡发屡错,你给我多了个子,却少了个也,你在说谁? 2019-11-09
  • 你反来复去说1+1=2,真痴呆了?你应该讲点其他的吧,譬如,1+1=2,是客观事实还是规律,是真理还是谬误。 2019-11-09
  • 《脉动的中医》推广健康新理念 让中医回归自然 2019-11-05
  • 西安,给盲人朋友留一条路吧…无障碍设施盲道-编辑整合 2019-11-05
  • 松原地震视频汇总!监控录像记录地震现场画面曝光 2019-11-02
  • 园博会三大展馆亮点纷呈 2019-11-02
  • 拥有大智慧的中国古人就把“子”和“女”结合在一体,造出一个会意字“好”字。一直就用这个“好”的感觉结果去衡量其它任何生存环境中的万物万事所给人的感觉。 2019-10-30
  • 英媒美国父母诉诸法院赶走"啃老"子女 中英均有类似问题 2019-10-27
  • 从凤凰网年会看2017 CEO刘爽:暮雪朝霜,毋改英雄意气 2019-10-02
  • 巴基斯坦塔利班头目死于美空袭 被悬赏500万捉拿 2019-10-02
  • 【专题】“散乱污”企业及各类涉气涉水环境违法行为举报平台 2019-09-27
  • 一位居住在深圳城中村的人才 2019-09-22
  • 十九大报告中的网信工作关键词 2019-09-18
  • 华商侃车大目录(持续更新) 2019-09-05
  • 肯尼亚蒙内铁路乘务员掠影(高清组图) 2019-08-13
  • 3d开奖结果今天号码:前端宝典:经典的CSS hack方法(解决IE6-IE11,Firefox/Safari/Opera/Chrome兼容问题)

    3d开奖结果走势图连线 www.nhmei.com 核心提示: 前端经?;嵊龅礁麂榔鞅硐植灰恢碌那榭?,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现,要知道一名好的前端,要尽可能不使用hack的情况下实现需求,做到较好的用户体验。

    做前端多年,虽然不是经常需要hack,但是我们经?;嵊龅礁麂榔鞅硐植灰恢碌那榭??;诖?,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现。我个人是不太推荐使用hack的,要知道一名好的前端,要尽可能不使用hack的情况下实现需求,做到较好的用户体验??墒前?,现实太残酷,浏览器厂商之间历史遗留的问题让我们在目标需求下不得不向hack妥协,虽然这只是个别情况。今天,结合自己的经验和理解,做了几个demo把IE6~IE10和其他标准浏览器的CSS hack做一个总结,也许本文应该是目前最全面的hack总结了吧。

    什么是CSS hack

    由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果。这时,我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!

    CSS hack的原理

    由于不同的浏览器和浏览器各版本对CSS的支持及解析结果不一样,以及CSS优先级对浏览器展现效果的影响,我们可以据此针对不同的浏览器情景来应用不同的CSS。

    CSS hack分类

    CSS Hack大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。

    属性前缀法(即类内部Hack):例如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",IE6~IE10都认识"\9",但firefox前述三个都不能认识。

    选择器前缀法(即选择器Hack):例如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。

    IE条件注释法(即HTML条件注释Hack):针对所有IE(注:IE10+已经不再支持条件注释): ,针对IE6及以下版本: 。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。

    CSS hack书写顺序,一般是将适用范围广、被识别能力强的CSS定义在前面。

    CSS hack方式一:条件注释法

    这种方式是IE浏览器专有的Hack方式,微软官方推荐使用的hack方式。举例如下

    只在IE下生效

    只在IE6下生效

    只在IE6以上版本生效

    只在IE8上不生效

    非IE浏览器生效

    CSS hack方式二:类内属性前缀法

    属性前缀法是在CSS样式属性名前加上一些只有特定浏览器才能识别的hack前缀,以达到预期的页面展现效果。

    IE浏览器各版本 CSS hack 对照表

    hack 写法 实例 IE6(S) IE6(Q) IE7(S) IE7(Q) IE8(S) IE8(Q) IE9(S) IE9(Q) IE10(S) IE10(Q)
    * *color 青色 Y Y Y Y N Y N Y N Y
    + +color 绿色 Y Y Y Y N Y N Y N Y
    - -color 黄色 Y Y N N N N N N N N
    _ _color 蓝色 Y Y N Y N Y N Y N N
    # #color 紫色 Y Y Y Y N Y N Y N Y
    \0 color:red\0 红色 N N N N Y N Y N Y N
    \9\0 color:red\9\0 粉色 N N N N N N Y N Y N
    !important color:blue !important;color:green; 棕色 N N Y N Y N Y N Y Y

    说明:在标准模式中

    “-″减号是IE6专有的hack

    “\9″ IE6/IE7/IE8/IE9/IE10都生效

    “\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack

    “\9\0″ 只对IE9/IE10生效,是IE9/10的hack

    demo如下

    body:nth-of-type(1).iehack{

    color:#F00;/*对WindowsIE9/Firefox7+/Opera10+/所有Chrome/Safari的CSShack,选择器也适用几乎全部Mobile/Linux/Macbrowser*/

    }

    .demo1,.demo2,.demo3,.demo4{

    width:100px;

    height:100px;

    }

    .hack{

    /*demo1*/

    /*demo1注意顺序,否则IE6/7下可能无法正确显示,导致结果显示为白色背景*/

    background-color:red;/*Allbrowsers*/

    background-color:blue!important;/*AllbrowsersbutIE6*/

    *background-color:black;/*IE6,IE7*/

    +background-color:yellow;/*IE6,IE7*/

    background-color:gray\9;/*IE6,IE7,IE8,IE9,IE10*/

    background-color:purple\0;/*IE8,IE9,IE10*/

    background-color:orange\9\0;/*IE9,IE10*/

    _background-color:green;/*OnlyworksinIE6*/

    *+background-color:pink;/*WARNING:OnlyworksinIE7?Isitright?*/

    }

    /*可以通过javascript检测IE10,然后给IE10的

    标签加上class=”ie10″这个类*/

    .ie10#hack{

    color:red;/*OnlyworksinIE10*/

    }

    /*demo2*/

    .iehack{

    /*该demo实例是用于区分标准模式下ie6~ie9和Firefox/Chrome的hack,注意顺序

    IE6显示为:绿色,

    IE7显示为:黑色,

    IE8显示为:红色,

    IE9显示为:蓝色,

    Firefox/Chrome显示为:橘色,

    (本例IE10效果同IE9,Opera最新版效果同IE8)

    */

    background-color:orange;/*all-forFirefox/Chrome*/

    background-color:red\0;/*ie8/9/10/Opera-forie8/ie10/Opera*/

    background-color:blue\9\0;/*ie9/10-forie9/10*/

    *background-color:black;/*ie6/7-forie7*/

    _background-color:green;/*ie6-forie6*/

    }

    /*demo3

    实例是用于区分标准模式下ie6~ie9和Firefox/Chrome的hack,注意顺序

    IE6显示为:红色,

    IE7显示为:蓝色,

    IE8显示为:绿色,

    IE9显示为:粉色,

    Firefox/Chrome显示为:橘色,

    (本例IE10效果同IE9,Opera最新版效果也同IE9为粉色)

    */

    .element{

    background-color:orange;/*allIE/FF/CH/OP*/

    }

    .element{

    *background-color:blue;/*IE6+7,doesn'tworkinIE8/9asIE7*/

    }

    .element{

    _background-color:red;/*IE6*/

    }

    .element{

    background-color:green\0;/*IE8+9+10*/

    }

    :root.element{background-color:pink\0;}/*IE9+10*/

    /*demo4*/

    /*

    该实例是用于区分标准模式下ie6~ie10和Opera/Firefox/Chrome的hack,本例特别要注意顺序

    IE6显示为:橘色,

    IE7显示为:粉色,

    IE8显示为:黄色,

    IE9显示为:紫色,

    IE10显示为:绿色,

    Firefox显示为:蓝色,

    Opera显示为:黑色,

    Safari/Chrome显示为:灰色,

    */

    .hacktest{

    background-color:blue;/*都识别,此处针对firefox*/

    background-color:red\9;/*allie*/

    background-color:yellow\0;/*forIE8/IE9/10最新版opera也认识*/

    +background-color:pink;/*forie6/7*/

    _background-color:orange;/*forie6*/

    }

    @mediascreenand(min-width:0){

    .hacktest{background-color:black\0;}/*opera*/

    }

    @mediascreenand(min-width:0){

    .hacktest{background-color:purple\9;}/*forIE9/IE10PS:国外有些习惯常写作\0,根本没考虑Opera也认识\0的实际*/

    }

    @mediascreenand(-ms-high-contrast:active),(-ms-high-contrast:none){

    .hacktest{background-color:green;}/*forIE10+此写法可以适配到高对比度和默认模式,故可覆盖所有ie10的模式*/

    }

    @mediascreenand(-webkit-min-device-pixel-ratio:0){.hacktest{background-color:gray;}}/*forChrome/Safari*/

    /*#963棕色:rootisforIE9/IE10,优先级高于@media,慎用!如果二者合用,必要时在@media样式加入!important才能区分IE9和IE10*/

    /*

    :root.hacktest{background-color:#963\9;}

    */

     

    demo1是测试不同IE浏览器下hack 的显示效果

    IE6显示为:粉色,

    IE7显示为:粉色,

    IE8显示为:蓝色,

    IE9显示为:蓝色,

    Firefox/Chrome/Opera显示为:蓝色,

    文章源自 3d开奖结果走势图连线 3d开奖结果走势图连线 中国最具影响力的创意设计综合网站

    编辑:Beach

    搜索推荐
    设计联盟官方微信
    设计联盟官方微信
    微信公众号:designlinks
    扫一扫 订阅最新资讯
    回到顶部
  • 屡发屡错,你给我多了个子,却少了个也,你在说谁? 2019-11-09
  • 你反来复去说1+1=2,真痴呆了?你应该讲点其他的吧,譬如,1+1=2,是客观事实还是规律,是真理还是谬误。 2019-11-09
  • 《脉动的中医》推广健康新理念 让中医回归自然 2019-11-05
  • 西安,给盲人朋友留一条路吧…无障碍设施盲道-编辑整合 2019-11-05
  • 松原地震视频汇总!监控录像记录地震现场画面曝光 2019-11-02
  • 园博会三大展馆亮点纷呈 2019-11-02
  • 拥有大智慧的中国古人就把“子”和“女”结合在一体,造出一个会意字“好”字。一直就用这个“好”的感觉结果去衡量其它任何生存环境中的万物万事所给人的感觉。 2019-10-30
  • 英媒美国父母诉诸法院赶走"啃老"子女 中英均有类似问题 2019-10-27
  • 从凤凰网年会看2017 CEO刘爽:暮雪朝霜,毋改英雄意气 2019-10-02
  • 巴基斯坦塔利班头目死于美空袭 被悬赏500万捉拿 2019-10-02
  • 【专题】“散乱污”企业及各类涉气涉水环境违法行为举报平台 2019-09-27
  • 一位居住在深圳城中村的人才 2019-09-22
  • 十九大报告中的网信工作关键词 2019-09-18
  • 华商侃车大目录(持续更新) 2019-09-05
  • 肯尼亚蒙内铁路乘务员掠影(高清组图) 2019-08-13
  • 重庆时时采彩五星计划 入2万的10个小生意 浙江体育彩票网 湖南快乐十分免费软件 北京28是合法的吗 今天20选5开奖号码 2017东方心经免费资料正版 黑龙江十一选5开奖结果 25选5历史开奖 宝石探秘java下载 沙巴初盘 网上挣钱职业 快速时时彩哪里开的 最新百人牛牛游戏漏洞 彩客彩票手机版app