Как определить конкретные правила CSS для IE9? - PullRequest
26 голосов
/ 09 сентября 2011

Друзья, пожалуйста, помогите мне в определении конкретного правила 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 ]

31 голосов
/ 07 января 2015

Обратите внимание, что принятый ответ также нацелен на 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\9 {
    .ie67 {property:value;}
}

или

.ie67 { *property:value;}

или

.ie67 { #property:value;}

IE 6, 7 и 8

@media \0screen\,screen\9 {
    .ie678 {property:value;}
}

IE 8

html>/**/body .ie8 {property:value;}

или

@media \0screen {
    .ie8 {property:value;}
}

Только в стандартном режиме IE 8

.ie8 { property /*\**/: value\9 }

IE 8,9 и 10

@media screen\0 {
    .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\9; }

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':'');

Добавляет (например) нижеследующее к элементу 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;
}

Сноска

Если возможно, избегайте ориентации на браузер.Определите и исправьте любые проблемы, которые вы идентифицируете.Поддержка прогрессивное улучшение и постепенное ухудшение .Имея это в виду, это сценарий «идеального мира», который не всегда доступен в производственной среде, поэтому вышеприведенное должно помочь предоставить некоторые хорошие варианты.


Атрибуция / Основное чтение

24 голосов
/ 09 декабря 2011

Вы можете добавить стиль CSS с помощью

:root

чтобы сделать его специфичным для IE9, например:

:root #element { color:pink \0/IE9; }  /* IE9 */
19 голосов
/ 09 сентября 2011

Использование IE условные комментарии :

<!--[if ie 9]>
    your stuff here
<![endif]-->
8 голосов
/ 16 июня 2014

\ 9 - это «CSS-хак», специфичный для Internet Explorer.

Это просто означает, что одна конкретная строка CSS заканчивается \ 9;

В вашем примере, если ваш CSS выглядел следующим образом ...

html .twit-post .delete_note a 
{ 
background-position-y: 2px\9; 

}
html .twit-post .delete_note a:hover 
{ 
 background-position-y: -14px\9;
 }

Результатом будет background-position-y: -14px;в IE 9

2 голосов
/ 09 сентября 2011

Я думаю, что вы можете сделать то же самое, как если бы вы хотели написать определенный код для IE6, но вместо этого сказать IE9:)

<!--[if IE 9]>
Special instructions for IE 9 here
<![endif]-->
1 голос
/ 09 сентября 2011

использовать условный CSS: (поместите код над <head> в ваш HTML, и IE9 прочтет этот дополнительный файл CSS)

<!--[if (gte IE 9)|!(IE)]><!-->
place the link to the CSS file here
<![endif]-->

Это означает, что подход заключается в новом CSS-файле, а не в взломе классов, это гарантирует, что CSS действителен.

0 голосов
/ 08 января 2018

Я обнаружил, что в некоторых случаях используются отрицательные значения (при использовании компилятора для компиляции файлов LESS) с использованием:

margin-right: -15px\9; /* This fails */
margin-right: ~"-18px\9"; /* This passes */
0 голосов
/ 09 сентября 2011

Вам не нужно ориентироваться на IE9. Он способен обрабатывать современные CSS и не должен быть взломан. Это устаревший метод разработки.

...