【问题标题】:Conditional comments not working for browsers other than Internet Explorer条件注释不适用于 Internet Explorer 以外的浏览器
【发布时间】:2013-07-12 05:48:30
【问题描述】:
<!--[if !IE]>
    <style type="text/css" media="screen">
        .title {
            color: rgba(0, 0, 0, 0);
            display: block;
            font-family: sans-serif;
            font-size: 50px;
            margin-left: 0px;
            margin-right: 5px;
            text-align: right;
            text-shadow: rgba(255, 255, 255, 0.247059) 2px 2px 2px, #888 0px 0px 0px;
        }
    </style>
<![endif]-->

head 标签中的这段代码永远不会运行...为什么?我一直在互联网上搜索很多,每个人都说它有效......但实际上,在我的网页中没有。我已经使用了很多次并且它有效......但是我应该错了...... 任何人都可以帮助我,好吗? 提前致谢!

【问题讨论】:

  • 只有 IE 可以读取,该样式永远不会应用到任何地方。
  • 嗨,Jason P,我知道它很相似,但是我在其中一个地方找到了它,但是无论如何都不起作用。
  • 嗨,警觉!你的意思是?谢谢!
  • 所写的代码不会在 IE 中执行。您正在使用!IE,这意味着“如果不是 IE”。我不确定它的价值是什么,因为 IE 是唯一使用这些的浏览器..

标签: html css


【解决方案1】:

正如this SO answer 中发布的(我在 cmets 中链接到的):

IE 以外的浏览器将条件语句视为 cmets,因为它们包含在注释标签内。

<!--[if IE]>
Non-IE browsers ignore this
<![endif]-->

但是,当您的目标浏览器不是 IE 时,您必须使用 2 个 cmets,一个在代码之前,一个在代码之后。 IE 会忽略它们之间的代码,而其他浏览器会将其视为普通代码。因此,针对非 IE 浏览器的语法是:

<!--[if !IE]-->
IE ignores this
<!--[endif]-->

你有这个:

<!--[if !IE]>
some stuff
<![endif]-->

哪些非 IE 浏览器会这样看:

(什么都没有,因为它只是对非IE浏览器的评论)。

你需要这个:

<!--[if !IE]-->
some stuff
<!--[endif]-->

这样开始标签和结束标签对于非 IE 浏览器都是完全包含的 cmets,并呈现样式。

【讨论】:

    【解决方案2】:

    Mystere Man 的意思是,这些条件 cmets仅在 Internet Explorer 10 之前的 Internet Explorer 版本中受支持。既然您说“应用这些样式,如果它 Internet Explorer”,你在逻辑上是不可能的。

    我个人会写如下-

      <style type="text/css" media="screen">
            .title {
                color: #000000;
                color: rgba(0, 0, 0, 0);
                display: block;
                font-family: sans-serif;
                font-size: 50px;
                margin-left: 0px;
                margin-right: 5px;
                text-align: right;
                text-shadow: rgba(255, 255, 255, 0.247059) 2px 2px 2px, #888 0px 0px 0px;
            }
      </style>
    

    您会注意到标题类的额外“颜色”属性 - 这将在支持 RGBA 的浏览器中被覆盖(它将使用该值代替),但对于那些不支持它的浏览器将是一个备用值。这样,所有不支持 RGBA 的浏览器(例如 Firefox 2 及更低版本)也将具有可用的备用颜色。由于 Internet Explorer 8 及更低版本也不支持此属性,因此我没有费心为 text-shadow 提供回退 - 您的用户可以在没有它的情况下生存。

    提供一个浏览器不理解的标准 CSS 属性并没有什么坏处,它只会被浏览器忽略,并且只在能够理解它的浏览器中使用。见more about CSS fallback properties

    如果您必须使用条件 cmets 来解决这个问题,您可以考虑针对那些您知道 支持 RGBa 的 Internet Explorer 版本(不要惩罚 Internet 用户Explorer 9 - 11,其浏览器 do support the property)。

    <!--[if lte IE 8]>
    <style type="text/css" media="screen">
            .title {
                color: #000000;
            }
    </style>
    <![endif]-->
    

    如果后备属性是更好的解决方案,请不要这样做,例如这种情况。

    【讨论】:

    • 嗨,密码!你在这里写的信息令人印象深刻。我很欣赏你解释的信息,但遗憾的是,我不得不说我的浏览器一定有问题或其他什么因为条件不起作用......无论如何......它似乎在你的浏览器上工作但不是在我的(浏览器:Windows 7 64 位上的 IE 10)。我做了一个解决方法,询问 jquery 浏览器是否是 IE,然后添加一种避免 rgba 属性的样式......我知道这不是最好的方法,但目前是唯一有效的方法。非常非常奇怪...谢谢!
    • 正如我在答案中所说,条件 cmets 仅适用于 Internet Explorer 9 及以下版本 - Microsoft 在 Internet Explorer 10 中已弃用 cmets。我强烈建议您使用后备颜色而不是依赖 jQuery这个,如果你使用 jQuery,至少只针对 Internet Explorer 8 及更低版本,因为 Internet Explorer 9-11 支持 RGBa。最后,如果答案解决了您在 StackOverflow 上的问题,请点赞和/或接受它。用户已经免费提供时间来帮助您。
    • 后备颜色方式在 IE 或 Chrome 中都不起作用,因此我不能投票解决未解决的问题,因为解决方案不是这样,当有人投票否决时我没有compaint我的问题是说它显然不是重复的,所以,请保持冷静。我非常感谢您的时间,以及其他用户在我帮助他们时感谢我的时间,就像您对我所做的一样。所以,非常感谢你,但后备颜色并不能解决问题,甚至在非 IE 浏览器中会使问题变得更糟。 :)
    【解决方案3】:

    我会回答自己,因为我发现了问题,这与 IE 选择器标记本身和 rgba 属性都没有任何关系(正如之前有人所说:IE 10 支持最后一个),但应用了 alpha 渐变。出于某种原因,alpha 值在 IE 中渲染得不是很好,它导致了完全不同的风格。更改字体颜色中的 0(alpha 值)并稍微使用这些颜色值可能会在 IE 和其他浏览器中获得非常相似的结果。 所以,非常感谢所有试图帮助我的人。我希望这可以帮助另一个人。 :)

    【讨论】:

      【解决方案4】:

      你错过了[endif]

      <!--[if !IE]>
          <style type="text/css" media="screen">
              .title {
                  color: rgba(0, 0, 0, 0);
                  display: block;
                  font-family: sans-serif;
                  font-size: 50px;
                  margin-left: 0px;
                  margin-right: 5px;
                  text-align: right;
                  text-shadow: rgba(255, 255, 255, 0.247059) 2px 2px 2px, #888 0px 0px 0px;
              }
          </style>
      <!--[endif]-->
      

      注意:这将在非 IE 浏览器上应用该样式。如果要在IE浏览器上使用,请将!IE改为IE

      【讨论】:

      • 也许复制粘贴中缺少 标签,抱歉,但在我的代码中,顺便说一句,正确的是 不是
      猜你喜欢
      • 2013-10-08
      • 2013-11-21
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多