仅在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%

什么是最简单的方法来完成这个?

2017年更新

根据环境的不同,有条件的注释已经在IE10 +中被正式弃用和删除 。


原版的

最简单的方法可能是在HTML中使用Internet Explorer条件注释 :

 <!--[if IE]> <style> .actual-form table { width: 100%; } </style> <![endif]--> 

有很多黑客(例如下划线黑客 ),你可以使用它只允许你的样式表中的IE浏览器,但如果你想在所有平台上的所有版本的IE浏览器非常混乱。

 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { #myElement { /* Enter your style code */ } } 

说明:这是一个特定于Microsoft的媒体查询。 使用特定于Microsoft IE的-ms-high-contrast属性,它只能在Internet Explorer 10或更高版本中parsing。 我已经使用了两个媒体查询的有效值,所以它只会被IEparsing,无论用户是否启用了高对比度。

除了IE条件注释之外,这是一个关于如何将IE6定位到IE10的更新列表 。

查看特定的IE浏览器之外的CSS&JS黑客 。

 /***** 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 */ @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; } } 

以及一个条件注释也可以使用CSS浏览器select器http://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\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; } } 

我认为最好的做法是你应该在<head>标签内写入IE条件语句,里面有你的特殊的样式表的链接。 这必须你的自定义的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]--> 

这不同于詹姆斯的答案,因为我认为(个人意见,因为我与devise师团队合作,我不希望他们触摸我的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最新的优秀资源 :

Internet Explorer 6的CSS黑客入侵

它被称为Star HTML Hack,看起来如下所示:

  • html .color {color:#F00;}这个黑客使用完全有效的CSS。

Internet Explorer 7的CSS黑客入侵

它被称为星加黑客。

*:first-child + html .color {color:#F00;}或者更短的版本:

* + html .color {color:#F00;}就像明星的HTML黑客,这使用有效的CSS。

Internet Explorer 8的CSS黑客入侵

@media \ 0screen {.color {color:#F00;}}这个黑客不使用有效的CSS。

Internet Explorer 9的CSS黑客入侵

:root .color {color:#F00 \ 9;}这个黑客也不会使用有效的CSS。

新增2013.02.04:不幸的是IE10明白这个黑客。

CSS黑客入侵的Internet Explorer 10

@media屏幕和(-ms-high-contrast:active),(-ms-high-contrast:none){.color {color:#F00;}}这个黑客也不使用有效的CSS。

对于/ * Internet Explorer 9+(单行)* /

 _::selection, .selector { property:value\0; } 

只有这个解决scheme完全适合我。