如何重写CSS @import语句

时间:2013-08-02 14:51:54

标签: html css

我的应用程序中有以下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;)' : ''";

3 个答案:

答案 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条件注释。