CSS if语句......是不是?

Bor*_*isD 6 css cross-browser

我是条件CSS的新手.我的问题是,用它来处理跨浏览器问题是否正确?

例如:

#header
{
    [if IE 7] width: 600px;
    [if Webkit] width:300px;    
}
Run Code Online (Sandbox Code Playgroud)

编者注:OP最有可能使用这个:http://www.conditional-css.com/

jac*_*Joe 6

对实际的CSS文件(或类)使用条件语句,但是在html上.

像这样例如:

<!--[if lte IE 6]>
<link href="css/layoutIE6.css" rel="stylesheet" type="text/css" />
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

这是写在html文件上,而不是CSS文件!

您发布的格式我认为实际上并不起作用,我敢打赌它不会验证,所以它不是标准的.


Wes*_*rch 6

在IE中使用这种技术的变体已经变得很普遍了,我相信它受到HTML5 Boilerplate的欢迎 [需要引证]:

<!--[if lt IE 7]> <html lang="en-us" class="ie6"> <![endif]-->
<!--[if IE 7]>    <html lang="en-us" class="ie7"> <![endif]-->
<!--[if IE 8]>    <html lang="en-us" class="ie8"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us"> <!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)

现在你可以在主CSS文件中定位没有IE hacks的元素,如下所示:

.ie6 .header li {
    /* some ie6 only styles here */
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这比使用单独的样式表更容易维护,但是遭受其他浏览器读取(但不适用)IE样式的轻微挫折.

如果您在使用Webkit时遇到问题,那么您很可能做错了什么.不是绝对的,但很有可能.

编辑:许多浏览器允许使用专有扩展,允许您设置仅适用于该浏览器的规则.例:

-moz-property {}
-webkit-property {}
-o-property {/* Opera */}
Run Code Online (Sandbox Code Playgroud)

请注意,这并不意味着您可以应用任何 CSS属性,您必须查看可用的内容.

我可以快速找到的最佳参考:http://reference.sitepoint.com/css/vendorspecific

SO编辑,如果有更好的参考,请随时更换此链接

  • @BorisD:写好,有效的CSS!其他浏览器通常"正确",并且你需要添加到"修复"一个的任何样式都不会影响另一个(比如添加一个`clear`属性或者你本来应该拥有的东西).您很少会遇到符合标准的浏览器问题. (2认同)