2012-03-01 98 views
8

有一天,我正在研究如何使用用戶代理樣式表瀏覽器(我使用chrome,但我猜它適用於所有格式)HTML元素。爲什麼瀏覽器的用戶代理樣式表使用-prefixed CSS屬性?

當使用,我發現這一點:

blockquote { 
-webkit-margin-before: 1em; 
-webkit-margin-after: 1em; 
-webkit-margin-start: 40px; 
-webkit-margin-end: 40px; 
} 

看起來很好。但是,爲什麼不能他們使用更多的東西像這樣?:

blockquote { 
margin-left:/*whatever*/; 
margin-top:/*whatever*/; 
margin-right:/*whatever*/; 
margin-bottom:/*whatever*/; 
} 

這只是發生在我身上,我認爲這是很奇怪的。

+0

因爲他們可以嗎?我也一直在想這個,並且認爲這與盒子模型怪異有關。好奇看看你會得到什麼答案。 – 2012-03-01 16:30:08

+1

因爲它們是**用戶代理樣式表**(正如你強調的那樣)? – BoltClock 2012-03-01 16:47:12

回答

7

某些瀏覽器使用這樣的CSS規則,因爲它們的規範尚未由W3C最終確定,因此如果它們要放棄前綴,它們將面臨最終W3C標準格式略有不同的風險,並且創建瀏覽器之間或相同瀏覽器版本之間的不兼容性,因爲它們將格式更改爲標準的做事方式。

這是與多個參數的規則特定問題 - 可以去錯更主要的是,該標準最終有不同的順序參數:

border-radius: 3px 3px 6px 6px; 
box-shadow: 3px 3px 6px #fff; 

...等...

添加前綴是他們的保證,如果最終標準與實現不同,則不會中斷。

至於有關margin-before代替margin-left的一部分,這似乎是因爲-webkit-margin-before規則不是margin-left等效,但margin:before,這是一個旨在使事情最近提議RTL和垂直書寫模式下工作。看到這個頁面:http://lists.w3.org/Archives/Public/www-style/2010Sep/0625.html雖然它似乎很隱晦。

+1

這並不能解釋爲什麼他們使用完全不同的CSS屬性,而不是'平常'的。它不是'-webkit-margin-left',它是'-webkit-margin-before'。 – 2012-03-01 16:34:33

+0

編輯,雖然我不認爲這是問題的關鍵。問題的標題肯定會提到「-prefixed」CSS屬性。 – 2012-03-01 16:44:26

+0

現在,這些屬性只是WebKit(* urgh *)的專有屬性,不應被視爲官方或由工作組認可,直到它們被添加到規範中。供應商前綴不僅用於官方屬性的實驗版本;他們也被供應商用來創建他們自己的屬性世界,讓他們自己去玩或使用各種各樣的原因,其中一些最終可能會或可能不會被提升爲規範的補充。作爲另一個非WebKit示例,Mozilla使用了許多前綴選擇器,屬性和值來解決某些怪癖。 – BoltClock 2012-03-01 16:48:29

1

幫助開發人員查看哪些元素是瀏覽器的默認值。

相關問題