对于Internet Explorer 8(IE8),我想使用以下CSS:
color : green;
我想申请一个只影响IE8的黑客,而不是IE9,IE6和7。
答案 0 :(得分:43)
在HTML中使用条件注释,如下所示:
<!--[if IE 8]>
<style>...</style>
<![endif]-->
见这里:http://www.quirksmode.org/css/condcom.html
您可以可靠地测试IE版本,并确保其他浏览器不会混淆。
答案 1 :(得分:35)
使用媒体查询分隔每个浏览器:
/* IE6/7 uses media, */
@media, {
.dude { color: green; }
.gal { color: red; }
}
/* IE8 uses \0 */
@media all\0 {
.dude { color: brown; }
.gal { color: orange; }
}
/* IE9 uses \9 */
@media all and (monochrome:0) {
.dude { color: yellow\9; }
.gal { color: blue\9; }
}
/* IE10 and IE11 both use -ms-high-contrast */
@media all and (-ms-high-contrast:none)
{
.foo { color: green } /* IE10 */
*::-ms-backdrop, .foo { color: red } /* IE11 */
}
<强>参考强>
答案 2 :(得分:15)
使用\0
。
color: green\0;
然而我做推荐条件评论,因为你也想排除IE9,而且这种黑客是否会影响IE9也是不可预测的。
无论如何,我从来没有需要IE8特定的黑客攻击。这是什么,IE8特定的问题,你想解决?它是否以IE8标准模式呈现?它的渲染器非常好。
答案 3 :(得分:8)
如果需要CSS中的小改动使用 \ 9 它会针对IE8及以下版本(IE6,IE7,IE8)
.element {
color:green \9;
}
最好的方法是在HTML中使用条件注释,如下所示:
<!--[if IE 8]>
<style>...</style>
<![endif]-->
答案 4 :(得分:2)
做这样的事情对你有用。
<!--[if IE 8]>
<div id="IE8">
<![endif]-->
*Your content*
<!--[if IE 8]>
</div>
<![endif]-->
然后你的CSS看起来像这样:
#IE8 div.something
{
color: purple;
}
答案 5 :(得分:2)
所以最近的一个问题促使我注意到一个选择器集hack只能排除IE 8 。
.selector, #excludeIE8::before {}
将导致IE 8抛出整个选择器集,而5-7和9-11将读取它就好了。任何::
选择器(::first-line, ::before, ::first-letter, ::selection
)都可以使用,我只选择了::before
,因此该行可以准确读取。请注意,假::before
选择器的目标是 伪造,因此如果您确实拥有ID为excludeIE8
的元素,请务必将其更改为其他内容
有趣的是,在现代浏览器(FF 45-52,GC 49-57,Edge 25/13)中,错误的::
选择器会占用整个选择器集{{3} })。似乎似乎最后一个Windows版本的Safari(和LTE IE 7,lol)在理解::before
的同时没有这种行为。另外,我无法在dabblet demo中找到任何内容来表明这是预期的行为,并且因为它会导致包含::future-legitimate-pseudoelement
的任何选择器设置破坏。我倾向于说这是一个错误 - 并且将来会蚕食我们的后遗症。
但是,如果您只想要属性级别(而不是规则级别),则上面的Ziga通过附加 \9
获得最佳解决方案(空格是关键; 不要复制内联< / strong>因为它使用了:
/*property-level hacks:*/
/*Standards, Edge*/
prop:val;
/*lte ie 11*/
prop:val\9;
/*lte ie 8*/
prop:val \9;
/*lte ie 7*/
*prop:val;
/*lte ie 6*/
_prop:val;
/*other direction...*/
/*gte ie 8, NOT Edge*/
prop:val\0;
旁注,我觉得自己像一个肮脏的死灵法师 - 但我想在某个地方记录我今天发现的排除IE8选择器套装,这似乎是最合适的地方。
答案 6 :(得分:0)
你能否使用你已经显示过的hack,然后使用IE7及以下的黑客来覆盖它?
答案 7 :(得分:0)
有各种方法可以将类添加到HTML元素中,识别您正在与之竞争的IE版本:Modernizr,HTML 5 Boilerplate等 - 或者只是滚动自己的版本。然后你可以在普通的CSS选择器中使用那个类(例如.lt-ie9),不需要hack。如果您只想影响IE8而不是以前的版本,请使用.lt-ie8选择器返回旧值。
答案 8 :(得分:0)
仅适用于IE8本机浏览器:
.classname{
*color: green; /* This is for IE8 Native browser alone */
}
答案 9 :(得分:-1)
这适用于Bellow IE8版本
.lt-ie9 #yourID {
你的css代码
}
答案 10 :(得分:-1)
我正在寻找一个适合IE10和CSS样式的好选项(但它也适用于IE8)我想出了这个想法:
<!--[if lt IE 10]><div class="column IE10-fix"><![endif]-->
<!--[if !lt IE 10]><!--><div class="column"><!--<![endif]-->
我用额外的类声明我的div或任何你想要的东西,这允许我以一种非常易读的方式在同一个样式表中添加额外的CSS。
它的W3C有效,而不是一个奇怪的CSS黑客。