css hack

来源:互联网 发布:python 每天定时执行 编辑:程序博客网 时间:2024/06/10 03:06

css hack

CSS hack由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。

简介

  这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack!


CSS Hack的原理是什么

  由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。
  CSS Hack大致有3种表现形式,CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack,CSS Hack主要针对IE浏览器
  类内部Hack:比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。等等
  选择器Hack:比如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。等等
  HTML头部引用(if IE)Hack:针对所有IE:<!--[if IE]><!--您的代码--><![endif]-->,针对IE6及以下版本:<!--[if lt IE 7]><!--您的代码--><![endif]-->,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
  书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。

如何写CSS Hack

  比如要分辨IE6和firefox两种浏览器,可以这样写:
  <style>
  div{
  background:green; /* for firefox */
  *background:red; /* for IE6 */
  }
  </style>
  我在IE6中看到是红色的,在firefox中看到是绿色的。
  解释一下:
  上面的css在firefox中,它是认识不了后面的那个带星号的东东是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。
  在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;background:red;},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。
CSS hack:区分IE6,IE7,firefox
  区别不同浏览器,CSS hack写法:
  区别IE6与FF:
  background:orange;*background:blue;
  区别IE6与IE7:
  background:green !important;background:blue;
  区别IE7与FF:
  background:orange; *background:green;
  区别FF,IE7,IE6:
  background:orange;*background:green;_background:blue;
  background:orange;*background:green !important;*background:blue;
  注:IE都能识别*;标准浏览器(如FF)不能识别*;
  IE6能识别*,某些情况下不能识别 !important,
  -----------------------------------------------------------------------------------------------
IE6支持重定义中的!important,例如:
  .yuanxin {color:#e00!important;}
  .yuanxin {color:#000;}
  你将会发现定义了样式class="yuanxin"时,在IE下,字体显示为红色(#e00)。
  但不支持同一定义中的!important。例如:
  .yuanxin {color:#e00!important;color:#000}
  此时在IE6下不支持,你将会发现定义了样式class="yuanxin"时,字体显示为黑色(#000)。
  不包括如下这种形式的同一定义中的!important。
  #pageOver{height:expression(document.documentElement.offsetHeight)!important;
  height:100%;}此种形式的定义,IE6中是可以解释到important的。
-----------------------------------------------------------------------------------------------
  IE6 IE7能识别*,也能识别!important;
  FF不能识别*,但能识别!important;
  IE6 IE7 FF
  * √ √ ×
  !important √
  √ √
  浏览器优先级别:FF<IE7<IE6,CSS hack书写顺序一般为FF IE7 IE6
以: " #demo {width:100px;} "为例;
  #demo {width:100px;} /*被FIREFOX,IE6,IE7执行.*/
  * html #demo {width:120px;} /*会被IE6执行,之前的定义会被后来的覆盖,所以#demo的宽度在IE6就为120px; */
  *+html #demo {width:130px;} /*会被IE7执行*/
  ---------------
  所以最后,#demo的宽度在三个浏览器的解释为:
  FIREFOX:100px;
  ie6:120px;
  ie7:130px;
  IE8 最新css hack:
  "\9" 例:"border:1px \9;".这里的"\9"可以区别所有IE和FireFox.
   "\0" IE8识别,IE6、IE7不能.
  "*" IE6、IE7可以识别.IE8、FireFox不能.
  "_" IE6可以识别"_",IE7、IE8、FireFox不能.

原文地址:
http://baike.baidu.com/view/1119452.htm
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 包小工程没经验怎么办 苹果7掉电特别快怎么办 苹果6手机用电快怎么办 徽商银行白金卡怎么办 微商贷款被骗了怎么办 老鼠咬过的肥皂怎么办 老鼠碰过的东西怎么办 想放屁放不出来怎么办 雷蛇键盘进水了怎么办 房间有蛐蛐好吵怎么办 蝙蝠跑家里来了,怎么办 手被老鼠咬了怎么办 家窗户外有蜂窝怎么办 老鼠咬东西很吵怎么办 老鼠躲在空调里怎么办 睡觉被老鼠咬了怎么办 仓鼠吃了浴沙怎么办 仓鼠上手时啃我怎么办 被银狐仓鼠咬了怎么办 被仓鼠咬没出血怎么办 手被仓鼠咬出血怎么办 仓鼠咬了肿了怎么办 被自家仓鼠咬了怎么办 仓鼠生完宝宝后怎么办 被金丝熊咬了怎么办 a字裙子没有内衬怎么办 踩过蟑螂的鞋子怎么办 宝宝给蚂蚁咬了怎么办 脚被蚂蚁咬肿了怎么办 孩子被蚂蚁咬了怎么办 家住高层有老鼠怎么办 久看手机眼睛疼怎么办 晚睡眼睛疼了怎么办 眼睛肿了有点痛怎么办 眼角两边长痘痘怎么办 坐动车行李超重怎么办 海康威视黑屏了怎么办 备孕喝酒抽烟了怎么办 鼻炎鼻子不通气怎么办速效办法 2岁宝宝智力落后怎么办 六个月宝宝尖足怎么办