• 端午节期间 拉萨至日喀则增开列车 2019-07-16
  • 毕业当援疆 去祖国最需要的地方 2019-07-09
  • 【说说这个节】端午问候有讲究 道声“安康”最适宜 2019-07-06
  • “忻州工匠”“忻州技能标兵”评选活动启动 2019-07-06
  • 山东石化第五届“携手并进,联融共赢”高峰论坛在济南召开 2019-07-03
  • 李克强:提高个人所得税起征点 增加专项费用扣除 2019-07-03
  • 全面从严治党,以更高能力和水平引领新时代——来自基层蹲点现场的报道 2019-06-29
  • 紫光阁中共中央国家机关工作委员会 2019-06-28
  • 阵容新老更迭新帅复兴变革 斗牛军团能否重回巅峰 2019-06-28
  • 繁峙大力发展生态农业建设绿色家园 2019-06-24
  • 靠拢美国失算!国内突然大乱,越南内部冲突升级,民众苦不堪言 2019-06-11
  • 坚决改全面改彻底改立即改!林彬杨到这两个地方现场督导环保督察反馈问题整改工作 2019-06-11
  • 肥西:居民楼前路面塌出大坑 面积数十平米 2019-06-10
  • 中国国家级自然保护区名录旅行地中国国家地理网 2019-05-29
  • 2019年11月1日起 外地车办进京证每年限12次 2019-05-25
  • 双色球开奖结果查询:前端宝典:经典的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-07-16
  • 毕业当援疆 去祖国最需要的地方 2019-07-09
  • 【说说这个节】端午问候有讲究 道声“安康”最适宜 2019-07-06
  • “忻州工匠”“忻州技能标兵”评选活动启动 2019-07-06
  • 山东石化第五届“携手并进,联融共赢”高峰论坛在济南召开 2019-07-03
  • 李克强:提高个人所得税起征点 增加专项费用扣除 2019-07-03
  • 全面从严治党,以更高能力和水平引领新时代——来自基层蹲点现场的报道 2019-06-29
  • 紫光阁中共中央国家机关工作委员会 2019-06-28
  • 阵容新老更迭新帅复兴变革 斗牛军团能否重回巅峰 2019-06-28
  • 繁峙大力发展生态农业建设绿色家园 2019-06-24
  • 靠拢美国失算!国内突然大乱,越南内部冲突升级,民众苦不堪言 2019-06-11
  • 坚决改全面改彻底改立即改!林彬杨到这两个地方现场督导环保督察反馈问题整改工作 2019-06-11
  • 肥西:居民楼前路面塌出大坑 面积数十平米 2019-06-10
  • 中国国家级自然保护区名录旅行地中国国家地理网 2019-05-29
  • 2019年11月1日起 外地车办进京证每年限12次 2019-05-25
  • 河北快三预测今天 赛马会必中波色 体彩6+1开奖查询 吉林快3预测号码 重庆快乐十分基本走势图 二肖中特天涯 极速飞艇正规吗 广东11选5一定牛预测 德甲士usb 上海快3开奖结果查询结果 201942期大乐透机选号 深圳风采2019072 亦庄彩票销售 网上买彩票 街机游戏棒球小子