2009-03-05 117 views
5
  • CSS有@import,对吧?
  • IE6明白*html selector黑客,对不对?

是否有可能他们像CSS方法包括IE6 hacker

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

,或者可能结合起来,

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

好的浏览器必须跳过这个,它仍然可以在IE6中工作吗?它如何看起来是一种解决方案?我可以清楚地看到它看起来像普通的CSS一样丑陋。

回答

4

是否有可能像他们在规则一样@import

* html @import url(ie6hacks.css); 

号组合都没有选择,所以不能与其他选择相结合。

有办法让在规则作为工作的黑客,例如这样的:

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

将IE6/7加载而不是其他的浏览器。但是,我不会推荐使用它;这种事情可能非常脆弱。这个特殊的例子也是无效的CSS。正如丹尼尔所说,如果你想要单独的.css文件作为黑客,最好的方法是一个有条件包含的链接标记。 “* html”的美妙之处在于,你可以将黑客规则放在同一个样式表中,只有少数几个样式表更易于管理;如果你有独立的样式表,它没有任何优势。

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

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

3

不幸的是,*html黑客无法用于导入其他样式表。

Here is an article解释了黑客攻击和其他攻击IE特定错误的其他攻击。

+0

谢谢你的明确答案。不幸的是,我今天没有投票:) – temoto 2009-03-05 16:15:33

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(它无法加载,即-style.css文件)和IE6测试了这(它加载它反正)。你的旅费可能会改变。

+0

我知道,谢谢。为什么?因为我认为在CSS内部保留CSS hack会很聪明。 – temoto 2009-03-05 16:14:39

+0

如果你所有的ie6特定的css都在一个单独的文件中,这是要走的路。如果你的ie6特有的css很少,你可以使用下划线,例如。 _width被ie6解释为宽度(但不是ie7),虽然不会验证.. – svinto 2009-03-05 16:22:43