我想在Internet Explorer 8 (IE8)中使用以下CSS:
color : green;
我想应用一个只影响IE8而不影响IE9、IE6和7的hack。
我想在Internet Explorer 8 (IE8)中使用以下CSS:
color : green;
我想应用一个只影响IE8而不影响IE9、IE6和7的hack。
在HTML中使用条件注释,就像这样:
<!--[if IE 8]>
<style>...</style>
<![endif]-->
请看这里:http://www.quirksmode.org/css/condcom.html
你可以可靠地测试IE版本,并确保其他浏览器不会混淆。
使用媒体查询来区分不同的浏览器:
/* 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 */
}
参考资料
使用\0
。
color: green\0;
然而,我建议使用条件注释来排除IE9,因为目前还不确定这个hack是否也会影响IE9。
无论如何,我从未需要过IE8特定的hack。你想解决的是IE8特定的问题吗?它是否已以IE8标准模式呈现?它的渲染器相当不错。
\0
之前加上空格,否则它也会影响IE9。 - ed1nh0.element {
color:green \9;
}
<!--[if IE 8]>
<style>...</style>
<![endif]-->
content
,但在 IE8 下无法移动(未检查其他 IE 版本)。我猜测这是因为我们传递了一个带引号的字符串值,而这个 hack(以及其他一些 hack)可能与其不兼容。content: "\0020" \9;
- adi518.selector, #excludeIE8::before {}
将导致IE 8丢弃整个选择器集合,而5-7和9-11则可以正常读取它。任何一个::
选择器(::first-line,::before,::first-letter,::selection
)都可以使用,我只是选择了::before
,以便行文准确。请注意,虚假的::before
选择器的目标是成为虚假的,因此如果您实际上有一个具有ID excludeIE8
的元素,请务必将其更改为其他内容。::
选择器会吞噬整个选择器集合(dabblet demo)。看起来最后一个Windows版本的Safari(以及LTE IE 7,哈哈)没有这种行为,同时仍然理解::before
。此外,我在规范中找不到任何指示这是预期行为的内容,而且由于它会破坏包含::future-legitimate-pseudoelement
的任何选择器集合,所以我倾向于认为这是一个错误,而且将来会给我们带来麻烦。
\9
(空格很关键;请勿复制粘贴内联部分,因为它使用了一个nbsp):/*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;
<!--[if IE 8]>
<div id="IE8">
<![endif]-->
*Your content*
<!--[if IE 8]>
</div>
<![endif]-->
#IE8 div.something
{
color: purple;
}
仅适用于IE8本地浏览器:
.classname{
*color: green; /* This is for IE8 Native browser alone */
}
你能不能不使用你已经展示的hack,然后使用一个IE7及以下版本的hack来覆盖它?
有多种方法可以将类添加到HTML元素中,以识别您正在使用哪个IE版本:Modernizr、HTML 5 Boilerplate等 - 或者自己编写。然后,您可以在普通的CSS选择器中使用该类(例如.lt-ie9),无需使用任何hack。如果您只想影响IE8而不是早期版本,请使用.lt-ie8选择器将旧值放回。
我正在寻找适用于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 hack。