A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

css hack

使用hacker 我可以把浏览器分为3类:ie6 ;ie7和遨游;其他(ie8 chrome ff safari opera等)

  • ie6认识的hacker 是下划线_ 和星号 *
  • ie7 遨游认识的hacker是星号 * (包括上面问题6中的 !important也算是hack的一种。不过实用性较小。)

比如这样一个css设置

height:300px;*height:200px;_height:100px; ie6浏览器在读到 height:300px的时候会认为高时300px;继续往下读,他也认识*heihgt, 所以当ie6读到*height:200px的时候会覆盖掉前一条的相冲突设置,认为高度是200px。继续往下读,ie6还认识_height,所以他又会覆盖掉200px高的设置,把高度设置为100px; ie7和遨游也是一样的从高度300px的设置往下读。当它们读到*height200px的时候就停下了,因为它们不认识_height。所以它们会把高度解析为200px; 剩下的浏览器只认识第一个height:300px;所以他们会把高度解析为300px。优先级相同且相冲突的属性设置后一个会覆盖掉前一个,所以书写的次序是很重要的。

/* CSS属性级Hack

*/ color:red; /* 所有浏览器可识别

*/ _color:red; /* 仅IE6 识别

*/ *color:red; /* IE6、IE7 识别

*/ +color:red; /* IE6、IE7 识别

*/ *+color:red; /* IE6、IE7 识别

*/ [color:red; /* IE6、IE7 识别

*/ color:red\9; /* IE6、IE7、IE8、IE9 识别

*/ color:red\0; /* IE8、IE9 识别

*/ color:red\9\0; /* 仅IE9识别

*/ color:red \0; /* 仅IE9识别

*/ color:red!important; /* IE6 不识别!important 有危险*/

/* CSS选择符级Hack */

*html #demo { color:red;} /* 仅IE6 识别 */

*+html #demo { color:red;} /* 仅IE7 识别 */

body:nth-of-type(1) #demo { color:red;} /* IE9+、FF3.5+、Chrome、Safari、Opera 可以识别 */

head:first-child+body #demo { color:red; } /* IE7+、FF、Chrome、Safari、Opera 可以识别 */

:root #demo { color:red\9; } : /* 仅IE9识别 */

越少的浮动,就会越少的代码,会有更灵活的页面,会有扩展性更强的页面。避免使用浮动+margin的用法。


html 条件注释

IE9:



  • <!--[if IE]>



  • <div class="box" id="box"></div>



  • <![endif]-->


仅单一IE:



  • <!--[if IE 7]>



  • <div class="box" id="box"></div>



  • <![endif]-->


大于 gt || , 大于等于 gte ||  , 小于 lt || , 小于等于 lte:



  • <!--[if gte IE 7]>



  • <div class="box" id="box"></div>



  • <![endif]-->


非IE(IE10+也能识别),此处多加的<-->,在IE中被当作内部注释,而在非IE浏览器中会闭合之前的注释:



  • <!--[if !IE]><-->



  • <div class="box" id="box"></div>



  • <![endif]-->




3 个回复

倒序浏览
回复 使用道具 举报
奈斯,很赞
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马