在线CSS IE黑客攻击

时间:2008-10-17 18:31:24

标签: css

是否可以在使用内联CSS时创建一个盒子模型hack?

例如:

<div id="blah" style="padding: 5px; margin: 5px; width: 30px; /*IE5-6 Equivalent here*/">

谢谢!

7 个答案:

答案 0 :(得分:12)

您也可以在内联样式中使用“前缀”黑客:

<div style="*background:red"></div>

请确保将IE hacks放在style属性的末尾。但我认为应尽可能避免使用内联样式。有条件的评论和Internet Explorer的单独CSS文件似乎是处理此类问题的最佳方式。

答案 1 :(得分:10)

我会去外面 - 在该元素上打一个班级,或使用你拥有的ID,并在外部处理样式。

我也同意我之前的条件评论答案。

说:作为绝对最后的手段,您可以使用以下样式黑客来定位&lt; = IE6,甚至是IE7。如果/如果他们修复IE8来打败你的黑客,就会遇到麻烦。

.foo {
padding: 5px;
^padding: 4px; /* this targets all IE, including 7. It must go first, or it overrides the following hack */
_padding: 3px; /* this targets >= IE6 */
width: 30px;
}
祝你好运。

答案 2 :(得分:3)

没有争论或反对CSS黑客,个人如果我需要这样做,我宁愿使用条件评论:

<!--[if lt IE 7]>
<style>
#blah {
padding: 5px;
margin: 5px;
width: 30px;
}
</style>
<![endif]-->

答案 3 :(得分:0)

最合适的答案是。 (编辑:要明确,我的意思是不要内联,我不是说不使用CSS黑客。)

编辑:这不起作用,IE忽略条件注释。留下这里的答案不是一个混蛋。

下一个最恰当的答案是条件评论:

<div id="blah" style="padding: 5px; margin: 5px; width: 30px; <!--[if lte IE 6]> ... <![endif]-->">

答案 4 :(得分:0)

请记住,IE 6需要在怪癖模式下>的盒子模型,而在标准模式下不需要 。 IE 5和IE 5.5一直需要BMH。

因此,如果您处于标准模式,则需要使用类似the original voice-family hack(针对IE 5.X和 IE 6)的内容。如果你处于怪癖模式,任何旧的IE&lt; = 6 hack都可以。

(您的问题内容向我建议您的页面以怪癖模式呈现。)

答案 5 :(得分:0)

是的,就像上面的每个人一样,如果你可以避免在线做它!!但是如果你真的需要内联,那么解析器过滤器可能是你最好的选择,这些是你可以在属性上使用的某些字符,例如ie6中的下划线黑客

print("code sample");

 style="position:relative;padding:5px; _position:absolute; _padding:10px;" 

ie6仍然会得到强调的风格,其他人都会忽略它们!

还有使用!important而不是下划线。

有一个游戏,看看会发生什么,但再次像上面一样,尽量避免像瘟疫:)

答案 6 :(得分:0)

最好的解决方案是在标准模式而不是Quirks模式下工作....这样就可以立即消除对大多数盒子模型的攻击。<​​/ p>

除此之外,使用IE特定样式表的条件注释更清晰,更易于维护。对于过去几年中大多数顶尖设计师而言,这种方法已经足够了......除非你的网站有一些特定内容需要全部内联,我建议退一步看看根本问题,而不是如何你可以在它们出现时修补这些小症状。alt text http://sonicloft.net/im/52