是否有使用的浏览器条件列表,包括样式表?

时间:2008-09-05 15:58:14

标签: css browser conditional

我看到人们在他们的HTML中做这样的事情:

<!--[if IE]>
  <link rel="stylesheet" href="ie.css" type="text/css" />
<![endif]-->

这是否适用于所有现代浏览器,是否有可用于if语句的浏览器类型列表?

修改

谢谢Ross。有兴趣了解 gt,lt,gte,&amp; LTE

4 个答案:

答案 0 :(得分:10)

这适用于所有浏览器,因为IE以外的任何内容都会看到<!--IGNORED COMMENT-->。如果注释包含条件子句,则只读取注释。看看this article

您还可以指定哪个版本的IE。例如:

<!--[if IE 8]>
<link rel="stylesheet type="text/css" href="ie8.css" />
<![endif]-->

答案 1 :(得分:1)

除了Ross的回答之外,您只能使用条件注释来定位Internet Explorer呈现引擎;其他浏览器没有类似的构造。例如,您不能编写以Firefox为目标的条件注释,但会被Internet Explorer忽略。

我实现与上面示例相同的效果的方法是嗅探用户代理字符串。然后我为该浏览器提供合适的CSS文件。这并不完美,因为有时人们会更改其用户代理字符串以实现兼容性。

针对不同浏览器的另一种方法是利用浏览器特定的黑客攻击。这些特别令人讨厌,因为它们通常依赖于浏览器中的错误,并且容易修复错误!

用户代理嗅探是我认为最好的全方位解决方案。

答案 2 :(得分:1)

如果您可以使用Javascript,有以下几种选择:

navigator.appName
navigator.appVersion 

link

或者通过使用jQuery等库来增强功能。

最后,您可以使用QuirksMode中的BrowserDetect对象。

获得浏览器名称和版本后,您可以插入HTML链接到样式表或包含其他标签。

答案 3 :(得分:1)

条件评论纯粹是针对IE(第5版及更高版本)。官方Microsoft文档是here。如果您打算使用它们,最好的策略是在正常包含后有条件地包含外部样式表或javascript文件。这意味着在IE上,您的IE特定代码将覆盖其他所有内容。在任何其他浏览器上,代码将被视为注释,并被解析器忽略。