Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否存在仅限IE8的css攻击?_Css_Internet Explorer 8_Conditional Comments - Fatal编程技术网

是否存在仅限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]> <

对于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]>
<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 */
 }
参考资料


有多种方法可以将一个类放到HTML元素上,识别您正在与之竞争的IE版本:、等,或者只需滚动您自己的。然后,您可以在一个普通的CSS选择器中使用该类(例如lt-ie9),而无需进行任何修改。如果您只想影响IE8而不想影响以前的版本,请使用.lt-IE8选择器将旧值放回。

如果需要CSS中的小更改,请使用\9它针对IE8及以下版本(IE6、IE7、IE8)

最好的方法是在HTML中使用条件注释,如下所示:

<!--[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版本)。我猜这是因为我们