是否存在仅限IE8的css攻击?
对于Internet Explorer 8(IE8),我希望使用以下CSS:是否存在仅限IE8的css攻击?,css,internet-explorer-8,conditional-comments,Css,Internet Explorer 8,Conditional Comments,对于Internet Explorer 8(IE8),我希望使用以下CSS: color : green; 我想应用一个只影响IE8的hack,而不影响IE9、IE6和IE7。在HTML中使用条件注释,如下所示: <!--[if IE 8]> <style>...</style> <![endif]--> #IE8 div.something { color: purple; } <!--[if IE 8]> <
color : green;
我想应用一个只影响IE8的hack,而不影响IE9、IE6和IE7。在HTML中使用条件注释,如下所示:
<!--[if IE 8]>
<style>...</style>
<![endif]-->
#IE8 div.something
{
color: purple;
}
<!--[if IE 8]>
<style>...</style>
<![endif]-->
请看这里:
您可以可靠地测试IE版本,也可以确保其他浏览器不会被混淆。您是否可以使用您已经展示过的hack,然后使用IE7及以下hack覆盖它?使用
\0
color: green\0;
不过,我还是推荐有条件的评论,因为你也想排除IE9,而且这个黑客行为是否也会影响IE9还不可预测
不管怎样,我从来没有需要一个IE8特定的黑客。您想解决的IE8具体问题是什么?它是在IE8标准模式下渲染的吗?它的渲染器非常好。这样做应该适合您
<!--[if IE 8]>
<div id="IE8">
<![endif]-->
*Your content*
<!--[if IE 8]>
</div>
<![endif]-->
使用媒体查询分隔每个浏览器:
/* 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 */
}
参考资料
<!--[if IE 8]>
<style>...</style>
<![endif]-->
#IE8 div.something
{
color: purple;
}
<!--[if IE 8]>
<style>...</style>
<![endif]-->
这将适用于以下IE8版本 .lt-ie9#你的身份证{ 你的css代码
}仅对于IE8本机浏览器:
.classname{
*color: green; /* This is for IE8 Native browser alone */
}
因此,最近的一个问题促使我注意到一个选择器集黑客只排除IE8
.selector,#excludie8::before{}
将导致IE8抛出整个选择器集,而5-7和9-11将读取它。任何:
选择器(::first-line,::before,::first-letter,::selection
)都可以工作,我只选择了::before
,因此该行读取准确。请注意,伪::before
选择器的目标是伪,因此,如果您实际有一个ID为excludie8的元素,请确保将其更改为其他内容
有趣的是,在现代浏览器(FF 45-52、GC 49-57、Edge 25/13)中,坏的:
选择器会吃掉整个选择器集()。似乎上一个Windows版本的Safari(和LTE IE 7,lol)在理解::before
的同时没有这种行为。此外,我在中找不到任何东西表明这是预期的行为,因为它会导致包含以下内容的任何选择器集:future合法伪元素
。。。我倾向于说这是一只虫子,将来它会蚕食我们的屁股
但是,如果您只需要属性级别(而不是规则级别)的内容,那么上面的Ziga通过添加
\9
(空格是关键;不要复制粘贴该内联内容,因为它使用nbsp):
旁注,我觉得自己像一个肮脏的亡灵巫师——但我想找个地方记录我今天发现的exclude-IE8-only selector set hack,这似乎是最合适的地方。我在寻找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攻击。我需要攻击而不是条件攻击为什么你需要攻击?黑客,就其本质而言,应该避免(除非作为绝对的最后手段)。@Palantir:你说得对,有条件的评论是一种黑客行为,但至少它们是“官方”支持的,可以根据需要直接针对特定的版本,与其仅仅依靠引擎的怪癖来以不同的方式解释它们,还有一件事(稍微)加强了黑客攻击的论据,那就是如果已经有了ie7的黑客攻击,而不是ie6的黑客攻击。您可能希望将这些攻击保持在一起,而不是将ie8攻击分离到代码中的另一个位置。使用这些攻击的一个原因是当您在一个环境(XML/XSL等)中工作时,恰好在文件传递到浏览器之前删除了所有注释。请不要使用这些攻击!超越其他黑客的黑客更糟糕@codeka-MGS已经在对另一个答案的评论中坚持他只会使用黑客,所以我只是顺其自然。如果是我,我会使用条件句,正如Plantir已经回答的那样。是的,但不要忘记前面的空白处
\0
,否则它也会影响IE9。您的ie8解决方案不仅仅是ie8黑客攻击,我会在我的计算机上尝试,IE9和ie10也会继承这种风格。你有IE8及以下的黑客吗?@JackZhang是的,使用IE9、IE10、IE11等黑客重置IE8黑客设置的风格规则。我已经用这些黑客更新了答案。ie8解决方案仍然不能仅适用于ie8,“\0”将适用于ie8、ie9和ie10。事实上,除了条件css之外,没有针对ie8-only样式的破解方法。答案中css重置的实质是使用级联。级联允许基于源顺序隐式重写规则。这是CSS的本质,向后兼容和向前兼容。这有点像巫术,但是。。。。你的IE10/11黑客程序不太管用。完全10使用您标记为9的内容(和9一样),11使用8的内容。此外,您的评论应该真正反映IE8适用于8-11,而不是将这一事实一概而论。使用属性<代码>内容代码>进行了尝试,但在IE8下不会改变(没有检查其他IE版本)。我猜这是因为我们