我希望IE6具有不同的CSS风格。基本上我使用CSS精灵与PNG文件。但对于IE6,我想使用.gif版本。
我不想使用<!-- if lte IE6
声明。我想将它包含在我的CSS文件中。
我该怎么做?
我需要这个,因为我希望我的用户包含一个CSS文件,而不是4行代码。我的用户是绝对的新手。我不想混淆他们。另外我想要的唯一改变是使用.gif而不是当前的.png。
_background-image:
如何发声?那有什么不对吗?
或者,我可以在CSS文件中使用条件语句吗?
答案 0 :(得分:8)
如果您不想使用条件注释,那么您可以使用* html hack:
h1 {
color: green;
}
* html h1 {
color: red; /* this will only be applied by IE 6, 5.5, 5, and 4 */
}
答案 1 :(得分:4)
显然,您可以通过在前面添加下划线来将IE6特定语句放入CSS中。
请参阅http://vexxhost.com/blog/2007/03/01/only-css-hack-you%E2%80%99ll-ever-need-seriously/
答案 2 :(得分:2)
正如你明显会从你得到的答案中注意到的那样,使用条件评论是非常标准的,人们会告诉你这样做,即使你明确表示你不想这样做。
但是,如果您必须在CSS文件级别进行用户代理确定,那么我要做的是编写一个输出CSS(而不是HTML)的PHP脚本,并在PHP中分析用户代理。如果文件必须被称为stylesheet.css或其他任何东西,Apache重写或MultiViews可用于使PHP脚本在该名称下可用。
答案 3 :(得分:1)
这是一个非常全面的未推荐黑客列表: http://www.javascriptkit.com/dhtmltutors/csshacks3.shtml
答案 4 :(得分:1)
你说你不想使用条件语句,但它们是推荐的最佳方式。主要原因是maintinability,CSS浏览器黑客往往很难为下一个人,或者你几个月下线,了解。在一个完全独立的文件中使用非hacky CSS可以更容易管理。
我非常建议你不要做用户代理嗅探,它会遇到很多问题,例如很多浏览器都会将自己报告为IE,即使它们不是(我认为在Opera 7中是默认的)。 User-Agent字符串不受信任,只能用作最后的手段。
答案 5 :(得分:0)
<!--[if IE 6]>
<link rel="stylesheet" href="/ie6.css">
<![endif]-->
编辑现在Wellbog已经解决了你的问题,不,没有办法用纯有效的CSS做到这一点。
你可以想象使用PHP或其他服务器端语言从用户代理字符串中检测IE6并提供不同的CSS文件,但是使用条件注释技术要好得多。
您拒绝使用Microsoft提供的现有的,有效的,非hacky解决方案的原因是什么?