【问题标题】:target ie8 and ie9 only (not ie7)仅针对 ie8 和 ie9(不是 ie7)
【发布时间】:2011-07-18 04:52:59
【问题描述】:

我有一个简单的页面,除了 ie8 和 ie9 将我的一个元素向右移动 1px 之外,一切正常,并且其重要的 b/c 会导致在黑色背景上笔直的 1px 白线。可怕。 我尝试了很多 css hack,即条件 cmets,但 <!--[if gt IE 7]><!--[if gte IE 8]> 之类的东西不起作用。只有<!--[if gte IE 7]> 被识别,也以 ie7 为目标 - 但 ie7 使页面像素完美呈现。因此,我尝试通过附加评论<!--[if IE 7]> 回滚对 ie7 的更改,但这杀死了后来 ie 中的修复。 ie8 和 9 似乎认为他们是 ie7。

到目前为止我的代码

<!--[if gte IE 7]>
<style>
#promo {margin-left:-1px;}
</style>
<![endif]-->

编辑:已解决,这似乎是 IETester 中的一个错误,在正确安装的资源管理器中一切正常。

【问题讨论】:

    标签: css internet-explorer conditional-comments


    【解决方案1】:

    如果只是你需要碰的一件事,你也可以使用:

    <!--[if IE 7 ]>    <html class= "ie7"> <![endif]-->
    <!--[if IE 8 ]>    <html class= "ie8"> <![endif]-->
    

    这将为 html 元素提供 .ie7 或 .ie8 类,具体取决于它们使用的内容或您指定的内容。然后,您可以定位您想要覆盖的任何内容,例如:

    .ie7 #promo {margin-left:-1px;}

    .ie8 #promo {margin-left:-3px;} 并单独定位它们。您还可以为 IE 9 指定规则。

    并将其包含在您的主样式表中,靠近底部。这使您不必制作许多不同的样式表。

    就 IE9 不呈现为 IE9 而言,我认为如果出于我完全不知道的原因安装 Internet Explorer,它实际上会退回到以前的呈现器。我认为 Paul Irish 在onTwik 网站上的his talk on the HTML5 Boilerplate 上提到了它。

    他们在.htaccess 文件中使用一些代码来强制 IE 使用最新的渲染引擎,并且实际上会强制 IE 使用已安装的 Chrome 引擎:

    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    

    【讨论】:

      【解决方案2】:

      我建议使用带有 IE 条件 cmets 的实际样式表。

      这篇文章提供了一个很好的概述,但我会避开黑客部分。

      http://css-tricks.com/how-to-create-an-ie-only-stylesheet/

      【讨论】:

        【解决方案3】:

        您是否正在做任何强制 IE8/9 进入兼容性视图的操作?如果是这样,您可能会在不知不觉中告诉这些浏览器将自己视为 IE7,至少就解释这些条件而言很重要。

        【讨论】:

        • 我正在使用 html5 文档类型 - 这可能是原因
        • 就其本身而言,这不太可能,因为当 IE7 是当前版本的 IE 时,HTML5 并不存在。
        猜你喜欢
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-24
        相关资源
        最近更新 更多