使用条件注释很容易针对Internet Explorer浏览器特定的CSS规则:

<!--[if IE 6]>
...include IE6-specific stylesheet here...
<![endif]-->

有时是Gecko引擎(Firefox)行为不当。将CSS规则只针对Firefox而不是其他浏览器的最佳方法是什么?也就是说,不仅Internet Explorer应该忽略仅限于firefox的规则,WebKit和Opera也应该忽略。

注:我正在寻找一个“干净”的解决方案。在我看来,使用JavaScript浏览器嗅探器向我的HTML中添加一个“firefox”类并不算干净。我更希望看到一些依赖于浏览器功能的东西,就像条件注释只对IE来说是“特殊的”……


当前回答

使用特定于引擎的规则可以确保有效的浏览器定位。

<style type="text/css">

    //Other browsers
    color : black;


    //Webkit (Chrome, Safari)
    @media screen and (-webkit-min-device-pixel-ratio:0) { 
        color:green;
    }

    //Firefox
    @media screen and (-moz-images-in-menus:0) {
        color:orange;
    }
</style>

//Internet Explorer
<!--[if IE]>
     <style type='text/css'>
        color:blue;
    </style>
<![endif]-->

其他回答

更新(来自@Antoine comment)

你可以使用@supports

@supports (-moz-appearance:none) { H1{颜色:红色;} } <h1>这应该是FF</h1>中的红色

更多关于@supports的信息请点击这里

此解决方案不依赖于打开JavaScript。

@-moz-document url-prefix() { h1 { 颜色:红色; } } <h1>这应该是FF</h1>中的红色

它基于另一个Mozilla特定的css扩展。这里有一个完整的CSS扩展列表:

Mozilla CSS扩展。机场当局请注意,它们大多已弃用!

有关这个特定的css扩展的更多信息,请参阅这个问题:@-moz-document url-prefix()做什么?

做到这一点的唯一方法是通过各种CSS hack,这将使您的页面更有可能在下一次浏览器更新时失败。如果有的话,它比使用js浏览器嗅探器更不安全。

使用特定于引擎的规则可以确保有效的浏览器定位。

<style type="text/css">

    //Other browsers
    color : black;


    //Webkit (Chrome, Safari)
    @media screen and (-webkit-min-device-pixel-ratio:0) { 
        color:green;
    }

    //Firefox
    @media screen and (-moz-images-in-menus:0) {
        color:orange;
    }
</style>

//Internet Explorer
<!--[if IE]>
     <style type='text/css'>
        color:blue;
    </style>
<![endif]-->

下面的代码倾向于抛出Style lint警告:

@-moz-document url-prefix() {
    h1 {
        color: red;
    }
}

而不是使用

@-moz-document url-prefix('') {
    h1 {
        color: red;
    }
}

帮了我一把!从这里得到了解决时尚棉绒警告的方法