Как определить конкретные правила CSS только для IE9?
Друзья, пожалуйста, помогите мне в определении конкретного правила css для IE9? Например, вот так
/* IE 6 fix */
* html .twit-post .delete_note a { background-position-y: 2px; }
* html .twit-post .delete_note a:hover { background-position-y: -14px; }
8 ответов
обратите внимание, что принятый ответ также нацелен на IE10. Таким образом, для более полного списка:
IE 6
* html .ie6 {property:value;}
или
.ie6 { _property:value;}
IE 7
*+html .ie7 {property:value;}
или
*:first-child+html .ie7 {property:value;}
IE 6 и 7
@media screen {
.ie67 {property:value;}
}
или
.ie67 { *property:value;}
или
.ie67 { #property:value;}
IE 6, 7 и 8
@media screen\,screen {
.ie678 {property:value;}
}
IE 8
html>/**/body .ie8 {property:value;}
или
@media screen {
.ie8 {property:value;}
}
режим стандартов IE 8 Только
.ie8 { property /*\**/: value }
IE 8,9 и 10
@media screen {
.ie8910 {property:value;}
}
IE 9 только
@media screen and (min-width:0) and (min-resolution: .001dpcm) {
// IE9 CSS
.ie9{property:value;}
}
IE 9 и выше
@media screen and (min-width:0) and (min-resolution: +72dpi) {
// IE9+ CSS
.ie9up{property:value;}
}
IE 9 и 10
@media screen and (min-width:0) {
.ie910{property:value;}
}
IE 10 только
_:-ms-lang(x), .ie10 { property:value; }
IE 10 и выше
_:-ms-lang(x), .ie10up { property:value; }
или
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
.ie10up{property:value;}
}
IE 11 (и выше..)
_:-ms-fullscreen, :root .ie11up { property:value; }
альтернативы Javascript
Modernizr
Modernizr быстро запускается при загрузке страницы для обнаружения функций; затем создает объект JavaScript с результатами и добавляет классы в html элемент
выбор агента пользователя
Javascript:
var b = document.documentElement;
b.setAttribute('data-useragent', navigator.userAgent);
b.setAttribute('data-platform', navigator.platform );
b.className += ((!!('ontouchstart' in window) || !!('onmsgesturechange' in window))?' touch':'');
добавляет (e.g) ниже к html
элемент:
data-useragent='Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)'
data-platform='Win32'
разрешение очень целевых селекторов CSS, например:
html[data-useragent*='Chrome/13.0'] .nav{
background:url(img/radial_grad.png) center bottom no-repeat;
}
сноска
если возможно, избегайте браузера таргетинг. Выявить и устранить любые вопрос(ы) идентификации. Поддержка постепенное повышение и изящные деградации. Имея это в виду, это сценарий "идеального мира" не всегда достижим в производственной среде, как таковой - вышеизложенное должно помочь обеспечить некоторые хорошие варианты.
Атрибуция / Существенное Чтение
Вы можете добавить стиль CSS с
:root
чтобы сделать его специфичным для IE9, например:
:root #element { color:pink /IE9; } /* IE9 */
использовать IE условные комментарии:
<!--[if ie 9]>
your stuff here
<![endif]-->
\9-это "CSS-Хак", специфичный для Internet Explorer.
это просто означает, что одна конкретная строка CSS заканчивается на \9;
в вашем примере, Если ваш CSS выглядел так...
html .twit-post .delete_note a
{
background-position-y: 2px;
}
html .twit-post .delete_note a:hover
{
background-position-y: -14px;
}
результатом будет background-position-y: - 14px; в IE 9
Я думаю, вы можете сделать то же самое, как если бы вы хотели написать конкретный код для IE6, но вместо этого скажите IE9 :)
<!--[if IE 9]>
Special instructions for IE 9 here
<![endif]-->
использовать условный CSS:
(поместите код над <head>
на вашем html, и IE9 будет читать этот дополнительный файл CSS)
<!--[if (gte IE 9)|!(IE)]><!-->
place the link to the CSS file here
<![endif]-->
это означает, что подход с новым файлом CSS, а не взлом в классах, это гарантирует, что CSS действительны.
Я обнаружил, что в некоторых случаях, используя отрицательные значения (при использовании компилятора для компиляции меньше файлов), используя:
margin-right: -15px; /* This fails */
margin-right: ~"-18px"; /* This passes */
вам не нужно нацеливаться на IE9. Он способен обрабатывать современный css и не должен быть взломан. Это устаревший метод развития.