Ответ 1
В браузерах до IE9 включая IE9 это делается через условные комментарии.
<!--[if IE]>
<style type="text/css">
IE specific CSS rules go here
</style>
<![endif]-->
Возможный дубликат:
Как выполнить условия IE в CSS?
Как я могу применять правила ниже только к IE?
.abc {
float:left;
height:0;
margin:0 10px;
width:0;
/*Apply these rules for IE only*/
position:absolute;
left:30;
top:-10;
/*Apply these rules for IE only*/
}
В браузерах до IE9 включая IE9 это делается через условные комментарии.
<!--[if IE]>
<style type="text/css">
IE specific CSS rules go here
</style>
<![endif]-->
Хороший способ избежать загрузки нескольких файлов CSS или встроенного CSS - передать класс телу body в зависимости от версии Internet Explorer. Если вам нужны только общие хаки IE, вы можете сделать что-то вроде этого, но его можно расширить, чтобы быть специфичным для версии:
<!--[if IE ]><body class="ie"><![endif]-->
<!--[if !IE]>--><body><!--<![endif]-->
Теперь в коде css вы можете просто:
.ie .abc {
position:absolute;
left:30;
top:-10;
}
Это также сохраняет ваши файлы CSS действительными, так как вам не нужно использовать грязные (и недопустимые) хаки CSS.
Быстрый подход состоит в том, чтобы использовать следующее в соответствии с тем, что вы хотите сфокусироваться (проверить комментарии), внутри ваших файлов css (где margin-top, установить любой атрибут css, который вам нравится):
margin-top: 10px\9; /*It will apply to all ie from 8 and below */
*margin-top: 10px; /*It will apply to ie 7 and below */
_margin-top: 10px; /*It will apply to ie 6 and below*/
Лучшим подходом было бы проверить агент пользователя или условное, если, чтобы избежать загрузки ненужного CSS в другие браузеры.
Я предпочитаю использовать отдельный файл для правил, как описано ранее.
<!--[if IE]><link rel="stylesheet" type="text/css" href="ie-style.css"/><![endif]-->
И внутри него вы можете настроить правила для разных версий, т.е. используя это:
.abc {...} /* ALL MSIE */
*html *.abc {...} /* MSIE 6 */
*:first-child+html .abc {...} /* MSIE 7 */