CSS方法包含IE6黑客攻击

时间:2009-03-05 16:08:18

标签: css internet-explorer internet-explorer-6

  • CSS有@import,对吧?
  • IE6了解*html selector黑客,对吧?

是否可以将它们组合起来,如

//*html @import url(ie6hacks.css);

或者,可能

//*html { @import url(ie6hacks.css); }

好的浏览器必须跳过这个,它还能在IE6中运行吗?它看起来像一个解决方案?我可以清楚地看到它看起来像普通的CSS一样难看。

3 个答案:

答案 0 :(得分:12)

当你可以使用条件评论来包含你需要的CSS时,为什么还要烦恼呢?

<!--[if IE 6]>
    <link rel="stylesheet" type="text/css" href="ie-6.0.css" />
<![endif]-->

一些资源:

如果你真的必须使用@import,你可以利用IE不遵循@import规则规范的事实。通常它必须是样式表或样式标记中的第一个想法,否则它将被完全忽略。但是,IE6(至少在我测试时)似乎并不在乎。沿着这些方向,您可以这样做:

<style type="text/css">
.NotARealClass { }

@import url("ie-style.css");
</style>

请注意,除了FF3(无法加载ie-style.css)和IE6(无论如何加载它)之外,我还没有测试过这个。您的里程可能会有所不同。

答案 1 :(得分:4)

  

是否可以将它们组合起来,如

* html @import url(ie6hacks.css);

没有。像@import这样的规则不是选择器,因此不能与其他选择器结合使用。

有一些方法可以使规则工作成为黑客,例如:

@import url(/* no! */iehacks.css);

将由IE6 / 7加载,但不会被其他浏览器加载。但是,我不建议使用它;这种事情真的很脆弱。这个特殊的例子也是无效的CSS。

正如丹尼尔所说,如果你想要单独的.css文件用于黑客攻击,最好的方法是有条件的链接标记。 “* html”的美妙之处在于,您可以将hack-rules放在同一个样式表中,如果只有少数样式表,则更容易管理;如果你有一个单独的样式表,它没有任何优势。

对于IE6来说,IMO“* html”是目前唯一合法使用的黑客。所有盒子模型的东西都和IE5一样死了 - 假设你没有使用IE6 Quirks模式,你不应该这样做 - 而其他浏览器,甚至是IE7,通常太好了,不能用简单的黑客攻击;可以针对他们的少数黑客太复杂/脆弱/无法真正使用。

(作为Simplified Box Model Hack的发明者,我对他们说了一个丰富的好消息。)

答案 2 :(得分:3)

不幸的是,*html hack不能用于导入其他样式表。

Here is an article解释hack和其他对攻击特定于IE的错误有用的内容。