CSS3規則帶來很多有趣的功能。例如,可以使用border-radius。該標準說如果你寫這條規則:爲什麼mozilla和webkit將-moz-和-webkit添加到CSS3規則中?
div.rounded-corners {
border-radius: 5px;
}
我應該得到一個5px的邊界半徑。
但是mozilla和webkit都沒有實現這個功能。但是,它們使用不同的名稱(分別爲-moz-border-radius
和-webkit-border-radius
)以相同的參數執行相同的操作。
爲了滿足儘可能多的瀏覽器有可能,你結束了這一點:
div.rounded-corners {
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
我可以看到兩個明顯的缺點:
- 複製粘貼代碼。這有明顯的風險,我不會在這裏討論。
- W3C CSS validator不會驗證這些規則。
與此同時,我沒有看到任何明顯的優勢。
我相信mozilla和webkit背後的人比我更聰明。以這種方式構建事物必定有一些很好的理由。只是我看不到他們。
所以,我必須問你們:爲什麼這樣?
嗯。我不確定我是否按照這裏的推理。我們假設邊界半徑標準改變了。並且Firefox用擴展名創建它。那不會破壞既有邊界半徑又有-moz-border-radius的網站嗎?或者他們會使舊的實現「覆蓋」標準的-moz-border-radius? – kikito 2010-05-28 17:14:56
通常,「舊」前綴版本將作爲別名保留一段時間。例如。如果你設置了'-moz-opacity',它會設置'opacity'風格,反之亦然。語法不同的地方會在格式之間進行轉換。 「-moz-border-radius」的語法與'-webkit-border-radius'的語法目前有很大不同,因爲它們分別實現了該功能;只有簡單的情況在兩者上都是相同的。如果他們沒有使用前綴的屬性名稱,這會導致不兼容問題。 – bobince 2010-05-28 17:24:54
瞭解。謝謝! – kikito 2010-05-28 23:07:06