Html 仅通过CSS以IE9为目标

Html 仅通过CSS以IE9为目标,html,css,internet-explorer-9,stylesheet,css-hack,Html,Css,Internet Explorer 9,Stylesheet,Css Hack,我只是想知道,在我的魔术袋里有这些IE黑客 "\9" - for IE8 and below. "*" - for IE7 and below. "_" - for IE6. i、 例如 body { border:2px solid blue; border:2px solid yellow \9; *border:2px solid green; _border:2px solid orange; } 是否有人对IE9有这样的攻击?i、 e.我试图仅通过

我只是想知道,在我的魔术袋里有这些IE黑客

"\9" - for IE8 and below.
"*" - for IE7 and below.
"_" - for IE6.
i、 例如

body { 
    border:2px solid blue;
    border:2px solid yellow \9;
    *border:2px solid green;
    _border:2px solid orange;
}
是否有人对IE9有这样的攻击?i、 e.我试图仅通过CSS将IE9作为目标?

我建议使用来提供IE9 CSS文件或使用条件html类,类似于:

<!--[if lt IE 7]> <html lang="en-us" class="no-js ie6"> <![endif]--> 
<!--[if IE 7]>    <html lang="en-us" class="no-js ie7"> <![endif]--> 
<!--[if IE 8]>    <html lang="en-us" class="no-js ie8"> <![endif]--> 
<!--[if gt IE 8]><!--> <html lang="en-us" class="no-js"> <!--<![endif]--> 


IE9非常符合标准。你不需要破解它

此外,还应使用加载不同的样式。对于IE 9,您将执行以下操作:

<!--[if IE 9]>
    <!-- conditional content goes here -->
<![endif]-->

很糟糕,但它应该可以工作:

body { 
    border:2px solid blue;
    border:2px solid yellow \9;
    *border:2px solid green;
    _border:2px solid orange;
}
body:nth-child(n) {border:1px solid purple \9; /*Should target IE9 only - not fully tested.*/}
地址: 我发现一个仅针对IE10(及以下)的媒体查询:


正如一些评论中所指出的,有时条件HTML在特定情况下不起作用,特别是当您无法修改页面代码本身时。因此,这里有一个解决方法:

基本风格 特定于浏览器的覆盖 IE<8:
html>/**/body.test{color:green;}

IE 9:
:root.test{color:green\;}

IE 8和9:
.test{color:green\;}

IE 9和Opera
:root.test{color:green\0;}

笔记

上述方法不适用于
后台
font-*
,任何
\0
\9
黑客通常都不稳定。有关CSS黑客的完整列表,请参阅。

这会在你最不经意的时候回来咬你。改为使用条件注释:
@nightfirecat-非常感谢。尝试过搜索,但什么也找不到:)似乎源代码是-很遗憾,Microsoft从未在CSS中实现条件注释。*和u实际上是IE6和IE7的事实标准;代替微软实施标准,我们将永远需要这些粗糙而现成的黑客。至少IE10看起来很有前途,所以不需要黑客攻击。HTML中的条件注释在无法修改HTML的情况下是无用的。始终使用安全的HTML。保护你自己:使用condcom。@Tim:你上面描述的黑客的问题是它们是bug。从来没有想过要有这样的功能。通过使用它们,您可能会导致具有类似错误的其他浏览器出现问题。坚持标准。谷歌应用程序通常没有最好的前端代码。@Tim:唉。。。同样,JavaScript解决方案也存在问题。使用condcom。它符合标准,工作正常。这些CSS黑客不会干扰其他浏览器,我已经使用它们多年了,没有任何问题。是的,最好使用condcoms,但是如果你不能控制HTML,只能控制CSS呢?在这种情况下,如果还没有使用condcom,那么就不可能使用condcom,而且CSS黑客可能是您唯一的选择E9非常符合标准。但这是符合标准的。偶尔我们仍然会对IE 9和优秀浏览器有不同的解释——所以,是的,对IE 9有这些条件是非常好的IE9是微软sure推出的最符合标准的浏览器,但它仍然远远落后于任何其他浏览器。@danwellman:唉,IE9有很多渲染错误(例如框阴影),需要在CSS中进行奇怪的调整。虽然CC是实现这些调整的正确方法,但它们通常有点笨手笨脚,并且会使维护CSS变得更加困难,例如,需要另一个样式表,或者至少定义额外的CSS选择器。不需要破解吗?请在2017年再说一遍。我已经对此进行了测试,并确认它只成功针对IE9。这是这个问题唯一正确的答案。使用condcoms的建议是合理的,但建议不同的解决方案实际上并不能回答最初的问题:这对酒店背景图像有效还是无效?
\9
似乎也针对IE10,但IE11似乎忽略了它,这也会影响IE11?这对IE9不再有效。我不知道为什么。@JCraine用
检查IE9上激活媒体查询的第一个答案这实际上又对我起了作用,我发现在本地主机上运行时会失败。但一旦推到我的服务器上,IE9就会像预期的那样接收它。奇怪。我认为这可能是由于与HTTP服务器(Apache/Nginx/IIS…)推送的头冲突造成的。检查dev、test和prod环境中项目的配置文件是否相同。
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10-specific styles go here */  
}
.test{color:red;}