0

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

到目前为止我的代码

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

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

4

3 回答 3

0

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

本文提供了一个很好的概述,但我会避免使用 hacks 部分。

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

于 2011-03-18T14:04:18.417 回答
0

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

<!--[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网站上关于 HTML5 Boilerplate 的演讲中提到了这一点。

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

<IfModule mod_setenvif.c>
  <IfModule mod_headers.c>
    BrowserMatch MSIE ie
    Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
  </IfModule>
</IfModule>
于 2011-03-18T14:23:32.810 回答
0

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

于 2011-03-18T14:27:22.537 回答