在Safari & Webkit中,僅使用border-radius似乎可以在不向其添加前綴-webkit的情況下工作。爲邊界半徑保留-webkit-前綴是否可以?爲webkit瀏覽器使用border-radius會好嗎?
回答
你錯過了驗證點。您驗證以避免錯誤!這些包括:不安全的瀏覽器擴展,黑客,即黑客和實際錯誤。絕對不應該讓你的代碼更少跨瀏覽器功能。
你應該知道有這樣的事情,如預期的錯誤,甚至有效的代碼適用於那些。瀏覽器擴展名如-moz-,-webkit-和-o-是預期的錯誤。所有瀏覽器都設計爲放棄未知規則。這就是CSS允許向後兼容的方式。支持CSS2的瀏覽器將放棄CSS3 border-radius規則。有效或無效與它沒有任何關係,並且任何瀏覽器都不會因此而中斷(幸運的是,對於我們來說,將CSS轉換爲XML的想法被壓扁並且從未看到過白天)。 Opera將放棄-moz-規則,Firefox將放棄-o-規則,這不是錯誤。這是預期的行爲:
保證初始短劃線或下劃線不會在任何當前或未來級別的CSS中用於屬性或關鍵字。因此,典型的CSS實現可能無法識別這些屬性,並可能根據處理解析錯誤的規則忽略它們。但是,由於最初的短劃線或下劃線是語法的一部分,CSS 2.1實現者應始終能夠使用符合CSS的解析器,無論它們是否支持特定於供應商的擴展。
w3c甚至定義了how to write these "Vendor-specific extensions"。以下是目前擴展衆所周知的:
- -ms-,mso- 微軟
- -moz- Mozilla的
- -O-,-xv- Opera軟件
- -webkit- 蘋果
- -khtml- KDE
也有一些你可能從來沒有聽說過的:
- -atsc- 高級電視標準委員會
- -wap- WAP論壇
瀏覽器實施草稿階段或部分實現(即。瀏覽器支持CSS規則的X,Y而不是Z)作爲擴展。通過這種方式,他們可以防止規範中的任何更改打破以前版本的瀏覽器。有些瀏覽器已經開始使用槍支並且將它們實現爲非擴展,並且通常的結果一直被稱爲瀏覽器已經在自己的腳下開槍了,例如:「瀏覽器XXX版本YYY執行不當[... ]」。最值得注意的是IE在這方面排名第一,但其他瀏覽器也有successfully managed to shoot themselves in the foot。當草稿成爲標準並且瀏覽器完全(或充分)實現規範時,會創建一個不帶-xxx-前綴的規則。
近年來,所有主流瀏覽器都將此作爲事實標準。
如何以及何時使用-xxx-瀏覽器擴展?像往常一樣,最好的做法是在您使用的最先進的瀏覽器中只使用符合標準的代碼,然後添加所有安全擴展。在擴展名之外使用基於w3c標準或當前工作草案的擴展名。不要使用丟棄的標準/草案或瀏覽器的崇拜標準(即一些舊的Firefox標準)。除非它有穩定的後備,否則也要避免任何修補規則。
在the border-radius rule的情況下,您有穩定的回退。
如何保持窗體和功能?在我看來,大多數人不會爲「ohmygosh無效」困擾,而是他們被迫爲同一行寫出多個規則。一個簡單的解決方案是使用模板系統。 CSS中有很多,因爲保持代碼乾的問題是一個持久的問題。
有manymanymany不同的實現在那裏。儘管基本的想法是使用mixin(即,功能):
=border-radius(!radius)
-moz-border-radius= !radius;
-webkit-border-radius= !radius;
-khtml-border-radius= !radius;
border-radius= !radius;
我們現在隨處寫:
.stuff
+border-radius(15px);
此代碼更加靈活然後就寫border-radius: 15px
和最好的希望。它也是可維護的(沒有任何元素的邊界半徑應該超過10px?沒問題)。
這樣做可能會遇到css驗證錯誤。 -
前綴屬性被視爲可選的擴展,因此導致問題的可能性較小。
我建議你保持-webkit
只是incase,一些瀏覽器(IE)在HTML/CSS不驗證時不會很好玩。這就是所謂的怪癖模式。
border-radius支持safari 5及更高版本。 -webkit-border-radius支持safari 3和更高版本。 所以,如果你想支持safari 3+,你必須使用-webkit-border-radius
- 1. Webkit/webkit2瀏覽器
- 2. 使用WebKit瀏覽器的問題InvokeScriptMethod()
- 3. Backbone.js應該使用版本533.3 Qt WebKit瀏覽器嗎?
- 4. 使用webkit-image-set時,如何爲非WebKit瀏覽器提供備用內容?
- 5. 爲什麼webkit瀏覽器會隨機生成動畫?
- 6. jquery ajax load()不會爲webkit瀏覽器加載內部css
- 7. 在VB.NET 2010中使用Webkit作爲瀏覽器控件
- 8. 如果瀏覽器未使用,瀏覽器會緩存CSS背景圖片嗎?
- 9. 在webkit瀏覽器中啓用HTML5
- 10. Webkit嵌入式瀏覽器禁用cookies
- 11. 使用session.cookie_lifetime保持會話關閉瀏覽器窗口不好嗎?
- 12. 如何檢測瀏覽器是否支持webkit瀏覽器?
- 13. 如何使用jQuery在WebKit瀏覽器中使用.focus()
- 14. 使用WebKit瀏覽器的XSLT文檔()使用
- 15. 使用webkit進行無頭瀏覽
- 16. 使用webkit瀏覽器瀏覽iframe中的內容的Javascript錯誤
- 17. WinJS.UI.AppBar會在瀏覽器上工作嗎?
- 18. 除了webkit,mozila還有其他的web瀏覽器實現嗎?
- 19. 我可以在瀏覽器中更改WebKit CSS規則嗎?
- 20. webkit瀏覽器取代按鈕
- 21. lib的所有瀏覽器webkit支持
- 22. jQuery fadeTo在Webkit瀏覽器中延遲
- 23. WebKit瀏覽器未填滿的div
- 24. Android瀏覽器支持webkit css?
- 25. Chrome瀏覽器中的-webkit-calc()
- 26. 節點WebKit瀏覽器插件
- 27. webkit瀏覽器越來越elements.width()錯誤
- 28. -crosskit瀏覽器支持的webkit
- 29. 跨瀏覽器替代Webkit/Html通知
- 30. jQuery的動畫在WebKit瀏覽器慢
border-radius也可以在Opera中運行,並且可以在IE9中運行。我測試了邊界半徑...在webkit瀏覽器中沒有前綴,它工作。我問是否可以放棄-webkit-前綴,並使用-moz-作爲firefox。 – omnix 2010-08-13 23:50:36
@Kawohi:CSS3標準尚未完成,並且可能在2012年之前不會廣泛實施.IE9仍處於測試階段,並且已經開始採用CSS3,但這並不意味着它是標準化的時候。根據瀏覽器的版本,您仍然可能遇到CSS解析問題。 Konquerer for Linux,手機瀏覽器(iPhone/Android /等等),IE6-8和Opera的舊版本不支持'border-radius',而10次中有9次你可能沒問題,我是告訴你,它可能會導致驗證錯誤,並且你可能會得到奇怪的結果。 – Aren 2010-08-14 00:04:09