Применить стиль ТОЛЬКО на 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%
Каков самый простой способ сделать это?
Ответы
Ответ 1
Обновление 2017
В зависимости от среды, условные комментарии официально устарели и удалены в IE10+.
оригинал
Самый простой способ - это использовать условный комментарий Internet Explorer в вашем HTML:
<!--[if IE]>
<style>
.actual-form table {
width: 100%;
}
</style>
<![endif]-->
Вы можете использовать множество хаков (например, хак с подчеркиванием), которые позволят вам нацеливать только IE в пределах вашей таблицы стилей, но это становится очень грязным, если вы хотите использовать все версии IE на всех платформах.
Ответ 2
@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, независимо от того, включен ли пользователь с высокой контрастностью или нет.
Ответ 3
Помимо условных комментариев 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\9; }
/* IE7, IE8 */
#veinte { color/*\**/: blue\9; }
/* IE6, IE7 -- acts as an !important */
#veintesiete { color: blue !ie; } /* string after ! can be anything */
/* IE8, IE9 */
#anotherone {color: blue\0/;} /* must go at the END of all rules */
/* IE9, IE10, IE11 */
@media screen and (min-width:0\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; }
}
Ответ 4
Для 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\9 {
selector { property:value; }
}
IE6,7
@media screen\9 {
selector { property:value; }
}
IE8
@media \0screen {
selector { property:value; }
}
IE6,7,8
@media \0screen\,screen\9 {
selector { property:value; }
}
IE9,10
@media screen and (min-width:0\0){
selector { property:value; }
}
Ответ 5
Как и условный комментарий, также можно использовать CSS Browser Selector http://rafael.adm.br/css_browser_selector/, так как это позволит вам настроить таргетинг на определенные браузеры. Затем вы можете установить свой CSS как
.ie .actual-form table {
width: 100%
}
Это также позволит вам настроить таргетинг на определенные браузеры в вашей основной таблице стилей без необходимости условных комментариев.
Ответ 6
Я думаю, что для лучшей практики вам следует написать условный оператор IE внутри тега <head>
что внутри есть ссылка на вашу специальную таблицу стилей.
Эта ДОЛЖНА БЫТЬ после вашей специальной ссылки css, чтобы она перекрывала последнюю,
У меня есть небольшой сайт, поэтому я использую то же самое, что и css для всех страниц.
<link rel="stylesheet" type="text/css" href="index.css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="all-ie-only.css" />
<![endif]-->
это отличается от ответа на james, поскольку я думаю (личное мнение, потому что я работаю с командой дизайнера, и я не хочу, чтобы они касались моих html файлов и что-то испортили) вы никогда не должны включать стили
в вашем html файле.
Ответ 7
Немного поздно, но это отлично сработало для меня при попытке скрыть фон для 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 */
}
Ответ 8
Добро пожаловать 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>
Object
BrowserDetect также предоставляет информацию о version
чтобы мы могли добавлять определенные классы - например, $('*').addClass('ie9');
если (BrowserDetect.version == 9)
.
Удачи....
Ответ 9
Это действительно зависит от версий IE... Я нашел этот отличный ресурс, обновленный от IE6-10:
CSS hack для Internet Explorer 6
Он называется HTML-код Star HTML и выглядит следующим образом:
- html.color {color: # F00;} Этот хак использует полностью действующий CSS.
CSS hack для Internet Explorer 7
Он называется Star Plus Hack.
*: first-child + html.color {color: # F00;} Или более короткая версия:
* + html.color {color: # F00;} Как и HTML-хакер, это использует действительный CSS.
CSS-хак для Internet Explorer 8
@media\0screen { .color {color: # F00;} } Эти хаки не используют действительный CSS.
CSS hack для Internet Explorer 9
: root.color {color: # F00\9;} Эти хаки также не используют действительный CSS.
Добавлено 2013.02.04: К сожалению, IE10 понимает этот хак.
CSS hack для Internet Explorer 10
экран @media и (-ms-high-contrast: active), (-ms-high-contrast: none) { .color {color: # F00;} } Эти хаки также не используют действительный CSS.
Ответ 10
<!--[if !IE]><body<![endif]-->
<!--[if IE]><body class="ie"> <![endif]-->
body.ie .actual-form table {
width: 100%
}
Ответ 11
Для/* Internet Explorer 9+ (однострочный) */
_::selection, .selector { property:value\0; }
Только это решение отлично работает для меня.
Ответ 12
For IE9+
@media screen and (min-width:0\0) and (min-resolution: +72dpi) {
// IE9+ CSS
.selector{
color: red;
}
}
IE Edge 12+
@supports (-ms-ime-align: auto) {
.selector {
color: red;
}
}
Этот работает на Edge и всех IE
:-ms-lang(x), .selector { color: red; }