2011-11-15 40 views
56

也許這是一個明顯的答案,但爲什麼瀏覽器爲CSS屬性創建供應商前綴?

爲什麼地球將瀏覽器決定創建自己的供應商前綴爲border-radius之類的?

我的意思是:爲什麼我必須鍵入:

-moz-border-radius: 10px; 
-webkit-border-radius: 10px; 
border-radius: 10px; 

是因爲每個平臺認爲「我們是冷靜,我們會拿出一個更好的方式做圓角? 「對於一個類型來說,看起來完全和不可思議地是多餘的。

+11

「是否因爲每個平臺都認爲'我們很酷,我們會想出一個更好的方法來做圓角?'」正確地說。 – BoltClock

回答

50

這是因爲這些功能是在規格達到最終發佈階段之前由供應商實施的。

的供應商前綴確保有不斷變化的功能等沒有發生衝突

本來,供應商前綴的點是爲了讓瀏覽器廠商 開始支持CSS試驗的聲明。

讓我們假設一個W3C工作組正在討論一個網格聲明(其中, 順便說一句,這不會是一個壞主意)。讓我們進一步說, 一些人創建了草稿規範,但其他人不同意 的一些細節。我們知道,這個過程可能需要很長時間。

讓我們進一步說,微軟作爲一個實驗決定 實現建議的網格。在這個時候,微軟不能確定該規範不會改變。因此,添加網格到其CSS,而不是 ,它添加了-ms-grid。

廠商前綴樣的說:「這是微軟解釋 正在進行的提議。」因此,如果電網的最終定義是 不同,微軟可以添加新的CSS屬性網格沒有打破依賴 頁-ms-grid

Source

+0

同意。新的想法需要一段時間才能在互聯網世界中得到批准,所以你可以得到各種有趣的屬性。一些想法從未被批准,而另一些只是由少數供應商實施。 – user978122

+1

也想補充一點,雖然現在已經完成了一些CSS規範,但我們仍然將它們用於較舊的瀏覽器支持。 – Th3Alchemist

10

UPDATE AS 2016年

由於這個職位3歲,它一提的是,現在大部分廠商都明白,這些前綴都只是創造非必要的重複代碼和情況下,你很重要需要指定3個不同的css規則才能在所有瀏覽器中使用一種效果,這是不需要的。現在

正如this glossary提及Mozilla的上Vendor PrefixMay 3, 2016觀點,

瀏覽器廠商都在試圖擺脫對實驗 功能的供應商前綴。他們注意到網絡開發人員在生產網站上使用它們,污染了全球空間,並且使得它更難以在劣勢中表現良好。

例如,僅僅在幾年前,設置一個箱子圓角,你必須寫:

-moz-border-radius: 10px 5px; 
-webkit-border-top-left-radius: 10px; 
-webkit-border-top-right-radius: 5px; 
-webkit-border-bottom-right-radius: 10px; 
-webkit-border-bottom-left-radius: 5px; 
border-radius: 10px 5px; 

但現在瀏覽器已經開始全面支持此功能,你真的只需要標準化版本:

border-radius: 10px 5px; 
相關問題