【问题标题】:Is there a list of browser conditionals for use including stylesheets?是否有包括样式表在内的浏览器条件列表?
【发布时间】:2008-09-26 02:10:16
【问题描述】:

我见过人们在他们的 HTML 中做这样的事情:

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

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

编辑

谢谢Rossgt、lt、gte 和 lte 很有趣。

【问题讨论】:

    标签: css browser conditional


    【解决方案1】:

    这适用于所有浏览器,因为除了 IE 以外的任何浏览器都可以看到 &lt;!--IGNORED COMMENT--&gt;。如果评论包含条件子句,则只有 IE 会读取评论。看看this article

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

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

    【讨论】:

    • 补充一点,这是 MS 官方支持的,通常被认为是开发人员在绝对必须针对 IE 的情况下的最佳实践(与以前使用的所有丑陋的 CSS hacks 网络开发人员相比) .这是一篇带有完整语法的 MSDN 文章:msdn.microsoft.com/en-us/library/ms537512.aspx
    【解决方案2】:

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

    navigator.appName
    navigator.appVersion 
    

    link

    或者通过使用诸如jQuery 之类的库来实现更强大的功能。

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        除罗斯的回答外,您只能针对具有条件 cmets 的 Internet Explorer 渲染引擎;其他浏览器没有类似的结构。例如,您不能编写以 Firefox 为目标但被 Internet Explorer 忽略的条件 cmets。

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

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

        在我看来,用户代理嗅探是最好的全方位解决方案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-14
          • 1970-01-01
          • 2013-03-31
          • 2012-11-01
          • 2011-10-24
          • 1970-01-01
          相关资源
          最近更新 更多