целевой ie8 и ie9 только (не ie7) - PullRequest
0 голосов
/ 18 марта 2011

У меня есть простая страница, и все работает нормально, за исключением 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.

Мой код до сих пор

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

РЕДАКТИРОВАТЬ: решено, Кажется, это ошибка в IETester, все работает нормально в правильно установленных проводниках.

Ответы [ 3 ]

0 голосов
/ 18 марта 2011

Если вам нужно столкнуться только с одной вещью, вы также можете использовать:

<!--[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 фактически превратится в предыдущий рендерер, если он установлен по причинам, которые мне совершенно неизвестны. Я думаю, что Пол Ирландский упоминает об этом на своем выступлении на 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>
0 голосов
/ 18 марта 2011

Делаете ли вы что-нибудь, что вынуждает IE8 / 9 перейти в режим совместимости?Если это так, вы можете невольно сказать этим браузерам, что они считают себя IE7, по крайней мере, насколько это важно для интерпретации этих условий.

0 голосов
/ 18 марта 2011

Я бы порекомендовал использовать фактическую таблицу стилей с условными комментариями IE.

Эта статья дает хороший обзор, но я бы не стал использовать раздел хаков.

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

...