2011-03-18 99 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