我有一个简单的页面,一切正常,除了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中的一个错误,在正确安装的资源管理器中,任何工作都可以。
答案 0 :(得分:0)
我建议使用带有IE条件注释的实际样式表。
本文给出了一个很好的概述,但我会避免黑客部分。
答案 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,至少就解释这些条件而言至关重要。