我的应用程序中有以下css代码,我需要使用import重写它。
据我所知,首先检查IE是否为版本6,如果是,则导入某些CSS,如果不是空字符串。
这里真的需要进口吗?我猜我是否只是在所有css文件的末尾写这个将获得优先权。
@import "javascript:(/msie 6/gi.test(navigator.userAgent)) ? 'table.menu tr.highlight td.icon img { filter: none !important; margin-left: 1px !important; margin-right: 3px !important; margin-top: 1px !important; margin-bottom: 3px !important;)' : ''";
答案 0 :(得分:7)
我个人会将IE6样式放在一个单独的样式表中,并在我的HTML头部使用条件注释来包含它:
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->
这里很好地解释了这项技术:http://css-tricks.com/how-to-create-an-ie-only-stylesheet/
正如您将注意到,此技术也适用于大多数其他版本的IE。我喜欢这种技术用于@Milkywayspatterns所描述的内联黑客,因为它使代码更清晰,更易读,更易于维护。此外,它还防止IE只有css被真正的浏览器加载。他们将忽略代码(因为他们应该,毕竟他们是评论),只有IE用户将不得不等待额外的字节加载...
我不羡慕你仍然需要支持IE6!
答案 1 :(得分:1)
在head
元素中使用条件注释,而不是在CSS中导入。这将仅隔离到IE 6:
<!--[if IE 6]>
<style type="text/css">
table.menu tr.highlight td.icon img {
filter: none !important;
margin-left: 1px !important;
margin-right: 3px !important;
margin-top: 1px !important;
margin-bottom: 3px !important;
}
</style>
<![endif]-->
在这种情况下,最好是创建一个专用的IE6样式表并添加它。这两种方式都可以。
答案 2 :(得分:1)
在你的.css文件中,你只能通过在声明之前添加(* html)来“破解”范围ie6。
仅限IE-6
* html .selector {
/* this will apply to ie6 only */
}
您也可以使用下划线黑客,但这会导致CSS文件中的验证错误。作为参考,这是一个例子:
.selector {
margin:0;
_margin-left:5px; /* only IE6 */
}
所以你可以尝试:
* html table.menu tr.highlight td.icon img {
filter: none !important;
margin-left: 1px !important;
margin-right: 3px !important;
margin-top: 1px !important;
margin-bottom: 3px !important;
}
如果你需要更多关于.css hacks来定位IE的信息,你可以阅读some examples here。
IE-6 ONLY * html #div { height: 300px; } IE-7 ONLY *+html #div { height: 300px; } IE-8 ONLY #div { height: 300px\0/; } IE-7 & IE-8 #div { height: 300px\9; } NON IE-7 ONLY: #div { _height: 300px; } Hide from IE 6 and LOWER: #div { height/**/: 300px; } html > body #div { height: 300px; }
如果你想用条件技术'替换'@import,那么,用户PeterVR回答更多的是在html文档的标题部分使用Microsoft条件注释。