有没有IE8只有css黑客?

时间:2010-06-15 06:55:36

标签: css internet-explorer-8 conditional-comments

对于Internet Explorer 8(IE8),我想使用以下CSS:

color : green;

我想申请一个只影响IE8的黑客,而不是IE9,IE6和7。

11 个答案:

答案 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版本:ModernizrHTML 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黑客。