目标ie8和ie9只(不是ie7)

时间:2011-03-18 13:56:54

标签: css internet-explorer conditional-comments

我有一个简单的页面,一切正常,除了ie8和ie9将我的一个元素1px向右移动,其显着的b / c导致黑色背景上的1px白线直线。可怕。 我尝试了很多css hacks,即条件注释,但<!--[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中的一个错误,在正确安装的资源管理器中,任何工作都可以。

3 个答案:

答案 0 :(得分:0)

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

本文给出了一个很好的概述,但我会避免黑客部分。

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

答案 1 :(得分: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在his talk on the HTML5 Boilerplate网站onTwik上提到了它。

他们在.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 :(得分:0)

你是否正在做任何迫使IE8 / 9进入兼容性视图的事情?如果是这样,你可能会无意中告诉那些浏览器将自己视为IE7,至少就解释这些条件而言至关重要。