【问题标题】:Is there any way to do "if IE" inside of a CSS file?有没有办法在 CSS 文件中执行“if IE”?
【发布时间】:2011-05-24 06:40:09
【问题描述】:

我知道如果您在 Internet Explorer 中可以使用条件语句加载不同的 CSS 文件,但是您可以在 CSS 文件中执行此操作吗?

我有一种情况,如果是 Internet Explorer,我希望右边距为 20,但如果是任何其他浏览器,我希望右边距为 10。

【问题讨论】:

  • 也许这可以通过滥用 IE #expression 语法来实现?

标签: css internet-explorer conditional-comments


【解决方案1】:

处理此问题的最简单方法是在您的 HTML 中使用条件,在页面的其余部分放置一个具有特定 id 的 div。

<!--[If IE 8]>
<div id="IE8">
<![endif]-->
  .
  .
  .
<!--[If IE 8]>
</div>
<![endif]-->

然后,您的 CSS 可以这样做:

#IE8 div.whatever { ... }

这种方式让所有这些 CSS hack 变得不必要。

【讨论】:

  • 我喜欢这种方法。它真的很干净。 +1
  • 除了添加了一个额外的元素。最好您应该像 HTML 样板一样,采用现有元素,如果它是 IE,则向其添加“IE”类。 paulirish.com/2008/…
  • 这是一个很棒的技巧,但是当你想为不同的 IE 版本(如 IE6 和 IE7)构建异常时,它可能会让你的 HTML 有点混乱。
  • @GolezTrol:如果你想保持干净,你可以从服务器或使用 javascript 来做有条件的工作。
  • 我试图绕过某些在 IE 上不起作用的 CSS 属性,并且在使其正常工作时遇到了问题。发现我在 IE11 中测试,在 IE 10 之后不支持条件语句...我讨厌 IE
【解决方案2】:

没有官方的 CSS 条件注释语法。只有有条件的 HTML 和 JavaScript cmets,因此请发挥创意(John Fisher 显示一种方式)。

您可以使用众所周知的 CSS hack 来模拟条件 CSS,但我不想这样做。它们可能会在任意版本的 IE 中崩溃或以其他方式意外工作,因为黑客旨在利用 IE 处理 CSS 中的错误。

【讨论】:

    【解决方案3】:

    有像this one 这样的黑客攻击,其中使用 IE 无法解释的规则意味着 IE 停止处理规则,使其可以安全地用于其他浏览器。

    像这样:

    div.iehack { 
      margin-right:20px; 
      voice-family: "\"}\""; 
      voice-family:inherit;
      margin-right:10px; 
    } 
    

    【讨论】:

      【解决方案4】:

      你会弄乱你的css文件做这些黑客。最好为 IE 创建一个单独的文件。在您的通用 css 文件中将边距设置为 10,并在您的 IE 特定文件中将其设置为 20,这应该(有条件地)在您的通用 css 文件之后加载。您知道如何做到这一点,几乎没有理由以任何其他方式做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-07
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 2022-10-07
        • 2021-01-31
        • 2010-12-11
        • 1970-01-01
        相关资源
        最近更新 更多