Применить стиль только на IE
вот мой блок CSS:
.actual-form table {
padding: 5px 0 15px 15px;
margin: 0 0 30px 0;
display: block;
width: 100%;
background: #f9f9f9;
border-top: 1px solid #d0d0d0;
border-bottom: 1px solid #d0d0d0;
}
Я хочу только IE 7, 8 и 9, чтобы "видеть" width: 100%
каков самый простой способ сделать это?
11 ответов:
обновление 2017
в зависимости от среды, условные комментарии были официально устарели и удалены в IE10+.
Оригинал
самый простой способ, вероятно, чтобы использовать Internet Explorer условный комментарий в HTML:
<!--[if IE]> <style> .actual-form table { width: 100%; } </style> <![endif]-->есть многочисленные хаки (например, подчеркивание hack) вы можете использовать, что позволит вам ориентироваться только IE в вашей таблице стилей, но она становится очень грязной, если вы хотите настроить таргетинг на все версии IE на всех платформах.
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { #myElement { /* Enter your style code */ } }пояснение: это запрос на носитель, специфичный для Microsoft. Используя свойство-ms-high-contrast, специфичное для Microsoft IE, оно будет анализироваться только в Internet Explorer 10 или выше. Я использовал оба допустимых значения медиа-запроса, поэтому он будет анализироваться только IE, независимо от того, включен ли у пользователя высокий контраст или нет.
помимо условных комментариев IE, это обновленный список о том, как нацелить IE6 на IE10.
см. конкретные CSS & JS хаки за пределами IE.
/***** Attribute Hacks ******/ /* IE6 */ #once { _color: blue } /* IE6, IE7 */ #doce { *color: blue; /* or #color: blue */ } /* Everything but IE6 */ #diecisiete { color/**/: blue } /* IE6, IE7, IE8, but also IE9 in some cases :( */ #diecinueve { color: blue; } /* IE7, IE8 */ #veinte { color/*\**/: blue; } /* IE6, IE7 -- acts as an !important */ #veintesiete { color: blue !ie; } /* string after ! can be anything */ /* IE8, IE9 */ #anotherone {color: blue/;} /* must go at the END of all rules */ /* IE9, IE10 */ @media screen and (min-width:0) { #veintidos { color: red} } /***** Selector Hacks ******/ /* IE6 and below */ * html #uno { color: red } /* IE7 */ *:first-child+html #dos { color: red } /* IE8 (Everything but IE 6,7) */ html>/**/body #cuatro { color: red } /* Everything but IE6-8 */ :root *> #quince { color: red } /* IE7 */ *+html #dieciocho { color: red } /* IE 10+ */ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { #veintiun { color: red; } }
а также условный комментарий может также использовать селектор браузера CSShttp://rafael.adm.br/css_browser_selector/ так как это позволит вам ориентироваться на конкретные браузеры. Затем вы можете установить CSS как
.ie .actual-form table { width: 100% }Это также позволит вам ориентироваться на определенные браузеры в вашей основной таблице стилей без необходимости в условных комментариях.
есть несколько хаков, доступных для IE
использование условных комментариев с таблицей стилей
<!--[if IE]> <link rel="stylesheet" type="text/css" href="only-ie.css" /> <![endif]-->использование условных комментариев с заголовком раздела css
<!--[if IE]> <style type="text/css"> /************ css for all IE browsers ****************/ </style> <![endif]-->использование условных комментариев с элементами HTML
<!--[if IE]> <div class="ie-only"> /*content*/ </div> <![endif]-->С помощью медиа-запросов
IE10+ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { selector { property:value; } } IE6,7,9,10 @media screen and (min-width: 640px), screen { selector { property:value; } } IE6,7 @media screen { selector { property:value; } } IE8 @media screen { selector { property:value; } } IE6,7,8 @media screen\,screen { selector { property:value; } } IE9,10 @media screen and (min-width:0){ selector { property:value; } }
Я думаю, что для лучшей практики вы должны написать условный оператор IE внутри
<head>тег это внутри имеет ссылку на вашу специальную таблицу стилей ie. Это ДОЛЖНО БЫТЬ после вашей пользовательской ссылки css, поэтому она переопределяет последнюю, У меня есть небольшой сайт, поэтому я использую один и тот же IE css для всех страниц.<link rel="stylesheet" type="text/css" href="index.css" /> <!--[if IE]> <link rel="stylesheet" type="text/css" href="all-ie-only.css" /> <![endif]-->это отличается от ответа Джеймса, как я думаю(личное мнение, потому что я работаю с командой дизайнеров, и я не хочу, чтобы они касались моих html-файлов и что-то там испортили) вы никогда не должны включать стили в вашем html-файле.
немного поздно на этом, но это отлично работало для меня при попытке скрыть фон для IE6 & 7
.myclass{ background-image: url("images/myimg.png"); background-position: right top; background-repeat: no-repeat; background-size: 22px auto; padding-left: 48px; height: 42px; _background-image: none; *background-image: none; }Я получил этот хак через: http://briancray.com/posts/target-ie6-and-ie7-with-only-1-extra-character-in-your-css/
#myelement { color: #999; /* shows in all browsers */ *color: #999; /* notice the * before the property - shows in IE7 and below */ _color: #999; /* notice the _ before the property - shows in IE6 and below */ }
Это действительно зависит от версии IE ... Я нашел это отличный ресурс, который находится в актуальном состоянии от IE6-10:
CSS hack для Internet Explorer 6
Он называется Звезда HTML Hack и выглядит следующим образом:
- html .цвета {цвет: #также F00;} Этот хак использует полностью действительный CSS.
CSS hack для Internet Explorer 7
Это называется Звезда плюс Хак.
*: первый ребенок + html .цвета {цвет: #также F00;} Или более короткая версия:
*+html .цвета {цвет: #также F00;} Как и star HTML hack, это использует действительный CSS.
CSS hack для Internet Explorer 8
@media \0screen { .цвета {цвет: #также F00;} } Этот хаки не использует допустимый CSS.
CSS hack для Internet Explorer 9
: root .цвета {цвет: #\также F00 9;} Этот хаки также не использует допустимый CSS.
добавлено 2013.02.04: к сожалению IE10 понимает этот хак.
CSS hack для Internet Explorer 10
экран@Media и (-МС-высокая контрастность: активный), (-МС-высокая контрастность: нет) { .цвета {цвет: #также F00;} } Этот хаки также не использует допустимый CSS.
для / * Internet Explorer 9+ (однострочный)*/
_::selection, .selector { property:value; }только это решение прекрасно работает для меня.
Добро пожаловать BrowserDetect - удивительная функция.
<script> var BrowserDetect; BrowserDetect = {...};// get BrowserDetect Object from the link referenced in this answer BrowserDetect.init(); // On page load, detect browser (with jQuery or vanilla) if (BrowserDetect.browser === 'Explorer') { // Add 'ie' class on every element on the page. $(*).addClass('ie'); } </script> <!-- ENSURE IE STYLES ARE AVAILABLE --> <style> div.ie { // do something special for div on IE browser. } h1.ie { // do something special for h1 on IE browser. } </style>The
ObjectBrowserDetect предоставляетversionинформация, поэтому мы можем добавить определенные классы-например.$('*').addClass('ie9');Если(BrowserDetect.version == 9).Удачи....
<!--[if !IE]><body<![endif]--> <!--[if IE]><body class="ie"> <![endif]--> body.ie .actual-form table { width: 100% }
Comments