2013-02-11 45 views
5

我知道,如果我們要確保一些CSS3特性在任何地方工作,我們需要使用W3C的前綴版本推薦一個樣:CSS前綴的用途是什麼?

transition: all 1s ease; 
-moz-transition: all 1s ease; 
-o-transition: all 1s ease; 
-webkit-transition: all 1s ease; 

我知道前綴用於實驗的功能,但爲什麼他們需要嗎?他們爲什麼不在原始的W3C上測試它們?是否每個CSS3功能對每個瀏覽器都有一個前綴,或者如果他們認爲他們應該創建一個前綴版本?

+0

的「爲什麼不遵循標準」是Flexbox的模塊一個很好的例子。該規範自多年以來一直在起作用,並且任何瀏覽器中實施的初稿都是從2009年開始的。自那時起,草案已經完全重寫。屬性名稱已經改變,以及一些屬性值。直到2012年9月,該規範才成爲候選人推薦*。 – cimmanon 2013-02-11 13:21:36

回答

6

供應商前綴的最初目的是讓供應商能夠添加他們自己的非標準功能以用於他們的CSS實現。然而,它們中的大多數被用於最終成爲標準的事物的實驗版本。

如果某個實驗性屬性沒有前綴,則表示它是屬性的正確標準版本。如果每個瀏覽器都以不同的方式呈現,那麼標準就沒有太多了。相反,瀏覽器避免實現一個前綴不動的屬性,直到它確定按照標準完成它,然後它開始支持前綴屬性作爲說明它正確支持這個特定標準的一種方式。

並非每個功能都有一個前綴;實際上,供應商只有在認爲必要時纔會創建前綴。

+2

另外,當標準穩定時,供應商應該*放棄前綴(候選推薦)。基於Webkit的瀏覽器是唯一頑固拒絕在許多新屬性上丟棄前綴的瀏覽器(請參閱:http://caniuse.com/#search=gradient)。 – cimmanon 2013-02-11 13:25:01

+0

@cimmanon:放棄給我更多理由來憎恨WebKit! – BoltClock 2013-02-11 19:55:13

+1

那是什麼?你想*更多*原因?好吧,你走吧! http://css-tricks.com/tldr-on-vendor-prefix-drama/ – cimmanon 2013-02-11 20:15:07

1

使用實驗功能的人已經知道標準的跨瀏覽器行爲根本不應該被期望。

在我看來,沒有必要爲新功能加前綴。由於必須編寫標準屬性,chrome的前綴屬性,firefox,opera,它使得它更難使用它,它也使樣式表變得更大(當不需要它們時,誰將刪除所有那些前綴屬性了嗎?)。

我沒有看到任何優勢,但這只是我的看法。

1

亞..可能在未來,我們將不必爲不同的瀏覽器使用這些前綴,但現在每個瀏覽器都有不同的CSS庫,所以作爲前端開發人員我們必須在我們的CSS中使用這些前綴其他瀏覽器將不會呈現我們的CSS。這是他們的工作方式,我們已經遵循了他們。

這裏是WebKit和Firefox的前綴庫的鏈接纔可

http://developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Gradients/Gradient.html

https://developer.mozilla.org/en-US/docs/CSS/CSS_Reference/Mozilla_Extensions