如果是IE的CSS问题

时间:2011-03-01 12:45:12

标签: css

我正在寻找一种使用简单的“if语句类型”来快速显示不同css代码的方法。

目前我一直在使用:

* html #mydiv

用于切换IE6的内容。但我想知道他们是不是更像是处理IE7,IE8等的小黑客。

我不想导入不同的样式表,只需切换实际的.css文档本身。

任何帮助都会很棒。谢谢!

3 个答案:

答案 0 :(得分:4)

顺便说一句,有条件的评论对IE浏览器来说更清晰;一些CSS黑客攻击无效的CSS。此页面针对不同版本的IE提供了广泛的黑客攻击:http://www.webdevout.net/css-hacks

答案 1 :(得分:3)

条件注释中包含的专用样式表是最不突兀的方式(除了完全放弃IE6支持),其他任何东西基本上都是黑客攻击。我可以想到不使用它们的唯一原因是你可以改变CSS,但不能改变HTML。在这种情况下,您可能希望尝试使用媒体查询,但要做好准备(并针对各种浏览器进行大量测试)。

答案 2 :(得分:2)

如果你做得对,你不需要为IE8提供不同的规则。

如果您的网站只需要几个IE6(您确定关心吗?)特定修复,那么只需使用Star HTML hack在CSS文件的末尾添加一个部分即可:

/* IE6 fixes */
* html p { font-size: 5em }
* html #header { margin-left: 100px }

否则,您应该只使用条件注释来导入单独的样式表:

<!--[if IE 7]>
<![endif]-->

这很干净,易于操作,而且易于理解。

您可能更喜欢的另一个选项是HTML5 Boilerplate执行此操作的方式:

<!--[if lt IE 7 ]> <html lang="en-us" class="no-js ie6"> <![endif]--> 
<!--[if IE 7 ]>    <html lang="en-us" class="no-js ie7"> <![endif]--> 
<!--[if IE 8 ]>    <html lang="en-us" class="no-js ie8"> <![endif]--> 
<!--[if IE 9 ]>    <html lang="en-us" class="no-js ie9"> <![endif]-->   
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en-us" class="no-js"> <!--<![endif]--> 

然后,您可以在单个CSS文件中写入:

.ie6 #header { color: black }
.ie7 #header { color: red }
.ie8 #header { color: blue }

最糟糕的选择是在样式表中分散这些类型的东西:

<强> IE6:

* html p {font-size: 5em; }

<强> IE7:

*+html p { font-size: 5em; }

IE8 (参见:http://my.opera.com/dbloom/blog/2009/03/11/css-hack-for-ie8-standards-mode

  

仅限IE8标准模式:

.test { color /*\**/: blue\9 }
  

所有IE版本,包括IE8标准模式:

.test { color: blue\9 }

(也可能针对IE7)

请点击此处查看不同黑客的摘要:http://paulirish.com/2009/browser-specific-css-hacks/