色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

僅針對帶有CSS的Firefox

錢琪琛1年前8瀏覽0評論

使用條件注釋,很容易用瀏覽器特定的CSS規則來定位Internet Explorer:

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

有時候是Gecko引擎(Firefox)出了問題。你的CSS規則只針對Firefox,而不是其他瀏覽器,最好的方法是什么?也就是說,不僅Internet Explorer應該忽略Firefox獨有的規則,WebKit和Opera也應該這樣做。

注意:我在尋找一個“干凈”的解決方案。在我看來,使用JavaScript瀏覽器嗅探器將“firefox”類添加到我的HTML并不干凈。我更希望看到依賴于瀏覽器功能的東西,就像條件注釋對IE來說只是“特殊的”

這種解決方案不依賴于JavaScript的開啟。

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

<h1>This should be red in FF</h1>

更新(來自@Antoine評論)

您可以使用@supports

@supports (-moz-appearance:none) {
    h1 { color:red; } 
}

<h1>This should be red in FF</h1>

以下是如何應對三種不同的瀏覽器:IE、FF和Chrome

<style type='text/css'>
/*This will work for chrome */
#categoryBackNextButtons
{
    width:490px;
}
/*This will work for firefox*/
@-moz-document url-prefix() {
    #categoryBackNextButtons{
        width:486px;
    }
}
</style>
<!--[if IE]>
<style type='text/css'>
/*This will work for IE*/
#categoryBackNextButtons
{
    width:486px;
}
</style>
<![endif]-->

這里有一些針對Firefox瀏覽器的技巧,

使用選擇器黑客。

_:-moz-tree-row(hover), .selector {}

JavaScript黑客

var isFF = !!window.sidebar;

var isFF = 'MozAppearance' in document.documentElement.style;

var isFF = !!navigator.userAgent.match(/firefox/i);

媒體查詢技巧 這將適用于Firefox 3.6及更高版本

@media screen and (-moz-images-in-menus:0) {}

如果您需要更多信息,請訪問瀏覽器主頁

首先,免責聲明。我并不真的支持我下面提出的解決方案。我寫的唯一一個針對瀏覽器的CSS是針對IE的(尤其是IE6),盡管我希望不是這樣。

現在,解決方案。你要求它優雅,所以我不知道它有多優雅,但它肯定只會針對壁虎平臺。

這個技巧只有在啟用JavaScript并使用Mozilla bindings (XBL)時才有效,Mozilla bindings在Firefox和所有其他基于Gecko的產品中被大量使用。作為比較,這類似于IE中的行為CSS屬性,但是功能更強大。

我的解決方案涉及三個文件:

ff.html:要設置樣式的文件 ff.xml:包含Gecko綁定的文件 ff.css:火狐特有的風格 ff.html

<!DOCTYPE html>

<html>
<head>
<style type="text/css">
body {
 -moz-binding: url(ff.xml#load-mozilla-css);
}
</style>
</head>
<body>

<h1>This should be red in FF</h1>

</body>
</html>

ff.xml

<?xml version="1.0"?>

<bindings xmlns="http://www.mozilla.org/xbl">
    <binding id="load-mozilla-css">
        <implementation>
            <constructor>
            <![CDATA[
                var link = document.createElement("link");
                    link.setAttribute("rel", "stylesheet");
                    link.setAttribute("type", "text/css");
                    link.setAttribute("href", "ff.css");

                document.getElementsByTagName("head")[0]
                        .appendChild(link);
            ]]>
            </constructor>
        </implementation>
    </binding>
</bindings>

ff.css

h1 {
 color: red;
}

更新: 上面的解決方案并沒有那么好。如果不是追加一個新的LINK元素,而是在BODY元素上添加“firefox”類,那就更好了。這是可能的,只要把上面的JS替換成下面的:

this.className += " firefox";

該解決方案的靈感來自狄恩·愛德華茲的蚊子行為。

使用特定于引擎的規則可確保有效的瀏覽器定位。

<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]-->

現在Firefox Quantum 57對Gecko進行了實質性的——可能是突破性的——改進,統稱為Stylo或Quantum CSS,您可能會發現自己處于一種必須區分Firefox和Firefox Quantum的遺留版本的情況。

從我這里的回答來看:

您可以將@supports與calc(0s)表達式和@-moz-document結合使用來測試Stylo — Gecko不支持calc()表達式中的時間值,但Stylo支持:

@-moz-document url-prefix() {
  @supports (animation: calc(0s)) {
    /* Stylo */
  }
}

這是一個概念驗證:

body::before {
  content: 'Not Fx';
}

@-moz-document url-prefix() {
  body::before {
    content: 'Fx legacy';
  }

  @supports (animation: calc(0s)) {
    body::before {
      content: 'Fx Quantum';
    }
  }
}

您的想法的一個變體是有一個服務器端的用戶代理檢測器,它將決定將什么樣的樣式表附加到頁面上。這樣你就可以有一個firefox.css,ie.css,opera.css等。

您可以在Javascript本身中完成類似的事情,盡管您可能不認為它是干凈的。

我也做過類似的事情,創建了一個default.css,其中包含了所有常見的樣式,然后添加了特定的樣式表來覆蓋或增強默認值。

做到這一點的唯一方法是通過各種CSS攻擊,這將使您的頁面在下次瀏覽器更新時更有可能失敗。如果有什么不同的話,它會比使用js瀏覽器嗅探器更不安全。

帶有-moz前綴

div:-moz-read-only {
  background: green;
}

textarea:-moz-read-write {
  background: green;
}

:-moz-any(div#foo) div.bar {
  background: green;
}

li:-moz-first-node, li:-moz-last-node {
  background: green;
}

可以從JavaScript使用CSS支持。

if (CSS.supports("( -moz-user-select:unset )")) {
    console.log("FIREFOX!!!")
}

下面的解決方案在更廣泛的Firefox瀏覽器版本中為您提供了不錯的Firefox專用CSS支持...

@supports (-moz-appearance:button) and (contain:paint) {

  body {
    background: red;
  }

}

-moz-外觀:早在2006年Mozilla/ Firefox就支持button。但@supports規則直到2019年才被支持,所以這將是最早支持該規則的Firefox瀏覽器。contain in:paint將Safari瀏覽器排除在規則之外。Internet Explorer和早期的Trident Edge瀏覽器不支持@supports,因此也被排除在CSS規則之外。沒有已知的Chrome瀏覽器應該支持-moz-appearance:button,所以排除。

一如既往,我所有的CSS解決方案都是100%無JavaScript的:)

下面的代碼傾向于拋出樣式lint警告:

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

而不是使用

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

幫了我一把!從此處獲得樣式線頭警告的解決方案