- CSS有@import,对吗?
- IE6理解
*html选择器
hack,对吗?
是否可能将它们结合起来使用?
//*html @import url(ie6hacks.css);
或者,可能,
//*html { @import url(ie6hacks.css); }
优秀的浏览器应该跳过此内容,但它在IE6上仍然有效吗?这种解决方案看起来怎么样?我可以清楚地看到它像普通CSS一样难看。
*html选择器
hack,对吗?是否可能将它们结合起来使用?
//*html @import url(ie6hacks.css);
//*html { @import url(ie6hacks.css); }
优秀的浏览器应该跳过此内容,但它在IE6上仍然有效吗?这种解决方案看起来怎么样?我可以清楚地看到它像普通CSS一样难看。
当你可以使用条件注释来仅包含所需的CSS时,为什么要费心去使用那种古怪的hack呢?
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie-6.0.css" />
<![endif]-->
一些资源:
如果你真的必须使用@import,你可以利用IE不遵循@import规则的事实。通常@import必须是样式表或样式标签中的第一项,否则它将完全被忽略。然而,在我测试的IE6中好像并不在意这个规则。与此类似,你可以这样做:
<style type="text/css">
.NotARealClass { }
@import url("ie-style.css");
</style>
请注意,我除了在FF3中测试过(其中无法加载ie-style.css),还没有在其他任何地方测试过,在IE6中可加载它。结果可能因情况而异。
* html @import url(ie6hacks.css);
类似@import的No. at-rules不是选择器,因此不能与其他选择器组合使用。
有一些方法可以将at-rules作为hack使用,例如:
@import url(/* no! */iehacks.css);
这段代码将被IE6/7加载,但其他浏览器不会。然而,我不建议使用它;这种东西可能非常脆弱。而且,这个特定的例子也是无效的CSS。
正如Daniel所说,如果您想要针对hack使用单独的.css文件,最好的方法是有条件地包含链接标记。 "* html" 的美妙之处在于可以将hack规则放在同一个样式表中,如果只有几个规则,更容易管理;如果您已经有了一个单独的样式表,那么它没有任何优势。
我认为“* html”适用于IE6是唯一仍然合法使用的hack。所有与盒模型相关的内容都随着IE5一起消失了 - 假设您不使用IE6 Quirks Mode(您不应该使用) - 而其他浏览器,即使是IE7,通常也太好了,无法通过简单的hack攻击;少数可以针对它们的hack过于复杂/脆弱/无效,无法真正使用。
(作为简化的盒模型hack的发明者,我对它们表示热烈的告别。)
很遗憾,*html
hack不能用于导入其他样式表。
这里有一篇文章,解释了该hack和其他有用于攻击IE特定错误的hack。