2011-03-18 60 views
0

我有一个简单的页面,并且一切正常,除了ie8和ie9将我的元素1px中的一个移动到右侧,并且其显着的b/c导致1px白色直线在黑色背景上。可怕。 我试了很多CSS黑客,即有条件的评论,但像<!--[if gt IE 7]><!--[if gte IE 8]>不工作。只有<!--[if gte IE 7]>被识别,目标ie7也是 - 但是ie7呈现完美的页面像素。所以我试图回滚ie7的更改,并附加注释<!--[if IE 7]>,但这会在后面的ie中杀死修复程序。 ie8和9似乎认为他们是ie7。目标只有ie8和ie9(不ie7)

到目前为止我的代码

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

编辑:解决了,现在看来,这是在IETester一个bug,任何工作在正确安装探险罚款。

回答

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实际上会回退到以前的渲染器,如果它的安装是由于我完全不知道的原因。我想保罗爱尔兰在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> 
0

你在做什么,力量IE8/9进入兼容性视图?如果是这样,你可能会不知不觉地告诉那些浏览器把自己想象成IE7,至少就解释这些条件而言至关重要。

+0

我使用html5文档类型 - 这可能是原因 – Valerij 2011-03-18 14:35:53

+0

本身,这是不太可能的,因为当IE7是IE的当前版本时HTML5不存在。 – Pops 2011-03-18 14:37:22