需警惕CSS3屬性的書寫順序

來源: http://www.zhangxinxu.com  發布時間: 2010-10-09 17:28  閱讀: 1295 次  推薦: 0   原文鏈接   [收藏]  
摘要:Chris Coyier曾發表過一篇博文《Ordering CSS3 Properties》,為我們講述了在書寫CSS時要注意屬性的定義順序,不同的順序得到的展示結果可能是不同的。

  一、不同書寫順序示例

  首先是比較聰明和值得推薦的寫法:

 
1. .not-a-square {
2. -webkit-border-radius: 10px;
3. -moz-border-radius: 10px;
4. border-radius: 10px;
5. }

  下面就是我們可能不怎么在意的,可能會產生問題的書寫順序:

 
1. .not-a-square {
2. border-radius: 10px;
3. -webkit-border-radius: 10px;
4. -moz-border-radius: 10px;
5. }

  實際上,按照我們的邏輯思考,后面的書寫也應該不會產生問題啊。比如說,火狐即支持border-radius: 10px;又支持-moz-border-radius: 10px;屬性,后面的overwrite前面的也沒有問題啊。但是,事實上,事情不是我們想的那么簡單的。

1. 很久很久以前:瀏覽器即不寵幸前綴CSS3也不寵幸純情CSS3(border-radius);

2. 不久之前:瀏覽器只寵幸前綴CSS3,不寵幸純情的CSS3;

3. 現在:瀏覽器不僅寵幸前綴CSS3屬性,還寵幸純情CSS3屬性;

4. 等到以后:前綴CSS3就回鄉下帶孩子了,瀏覽器只寵幸純情CSS3屬性。

  下圖就是這種趨勢的生動寫照。

  二、實例說明

  理想總是美好的,現實總是慘淡的。當下,webkit核心的瀏覽器不僅支持border-radius屬性,也支持-webkit-border-radius屬性,這本身沒什么,只是……見下面:

 
1. .not-a-square {
2. // 這兩個家伙干的不是同一個活
3. border-radius
: 30px 10px;
4. -webkit-border-radius: 30px 10px;
5. }

  當屬性超過一個參數值的時候,不同的屬性產生的作用是不一樣的。

  純情的那種寫法(border-radius: 30px 10px),是讓box左上和右下角為30像素圓弧,左下角和右上是10像素圓弧。而那種雜碎的前綴寫法(-webkit-border-radius),則box渲染為每個角都是30像素寬10像素高的圓弧。

如下圖所示:

  如果您現在使用的是最新的Chrome瀏覽器(我的是Chrome6.0.472.62),或者是(Safari4依舊扁平)Safari5,您可以狠狠地點擊這里:CSS3不同書寫屬性影響demo,您就能看上上面截圖所示的效果了。

  三、結語

  其實Border radius不是唯一的實例,CSS3中的background-image 漸變貌似也有同樣的遭遇。我想,以后會有人吧這些差異全部羅列出來的。但是,無論怎樣,把“純情”的寫法放在最后壓軸總是更明智的。

  【英文出處】:http://css-tricks.com/ordering-css3-properties/

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()