我见过人们在他们的 HTML 中做这样的事情:
<!--[if IE]>
<link rel="stylesheet" href="ie.css" type="text/css" />
<![endif]-->
这是否适用于所有现代浏览器,是否有一个浏览器类型列表可以与这种 if 语句一起使用?
编辑
谢谢罗斯。_ 有趣的是了解gt、lt、gte 和 lte。
我见过人们在他们的 HTML 中做这样的事情:
<!--[if IE]>
<link rel="stylesheet" href="ie.css" type="text/css" />
<![endif]-->
这是否适用于所有现代浏览器,是否有一个浏览器类型列表可以与这种 if 语句一起使用?
编辑
谢谢罗斯。_ 有趣的是了解gt、lt、gte 和 lte。
这适用于所有浏览器,因为除了 IE 之外的任何东西都可以看到<!--IGNORED COMMENT-->
. 如果评论包含条件子句,则只有 IE 会读取评论。看看这篇文章
您还可以指定 IE 的哪个版本。例如:
<!--[if IE 8]>
<link rel="stylesheet type="text/css" href="ie8.css" />
<![endif]-->
如果您可以使用 Javascript,则有多种选择:
navigator.appName
navigator.appVersion
或者通过使用诸如jQuery之类的库来获得更强大的功能。
最后,您可以使用 QuirksMode 中的BrowserDetect对象。
获得浏览器名称和版本后,您可以插入 HTML 以链接到样式表或包含其他标签。
条件注释纯粹用于 IE(版本 5 及更高版本)。微软官方文档在这里。如果您要使用它们,最好的策略是在正常包含之后有条件地包含外部样式表或 javascript 文件。这意味着在 IE 上,您的 IE 特定代码将覆盖其他所有内容。在任何其他浏览器上,代码将被视为注释并被解析器忽略。
除了罗斯的回答,您只能针对带有条件注释的 Internet Explorer 渲染引擎;其他浏览器没有类似的结构。例如,您不能编写针对 Firefox 但被 Internet Explorer 忽略的条件注释。
我实现与上面示例相同效果的方法是嗅探用户代理字符串。然后,我为该浏览器提供了一个合适的 CSS 文件。这并不完美,因为有时人们会为了兼容性而更改他们的用户代理字符串。
针对不同浏览器的另一种方法是利用浏览器特定的黑客攻击。这些特别讨厌,因为它们通常依赖于浏览器中的错误,并且错误很容易被修复!
在我看来,用户代理嗅探是最好的全方位解决方案。