書寫整潔優雅的CSS3代碼

CSS3已經開始被大家廣泛的運用到產品中的頁面代碼中去,CSS3帶來的革新式的變化我在這裡就不一一細說了。不過因為目前的CSS3還處在草案階段,所以絕大部分的瀏覽器(除了opera應該是)都是使用的私有屬性的方式來實現對CSS3的支持。比如firefox的-moz-前綴和webkit核心瀏覽器的-webkit-前綴等。

整潔優雅的代碼能提高生產效率,特別是在團隊合作中。我想很多人都習慣把css代碼寫成一行的形式,諸如這樣:

.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;}
.sidebar ul li{float:left}

採用這樣的一行形式,能讓你們整齊的排列相似父輩繼承的樣式,讓他們很簡單的能被查找到。當然為了更好的查找到代碼,你們可能還需要一個注釋。

/*
something u want to say --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;}
.sidebar ul li{float:left}


然後這時候我們想給sidebar加一個5像素的圓角,於是

/*
sidebar border-radius {3px} --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}
.sidebar ul li{float:left}

這樣你可能還不會覺得有什麼,因為只是加了border-radius,如果我們繼續加個box-shadow呢?

/*
sidebar border-radius {3px} --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;box-shadow:1px 1px 5px #rgba(0,0,0,0.1);-moz-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);-webkit-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);}
.sidebar ul li{float:left}

是不是看起來挺崩潰的,這不是坑爹么…sidebar的樣式看起來糊成一團了,這些css3代碼和普通的css代碼混在一起十分難受…

於是這樣同樣有代碼潔癖的老外童鞋給出了一種他的解決方案,請看

/*
sidebar border-radius {3px} --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;
	border-radius:3px;
	-moz-border-radius:3px;
	-webkit-border-radius:3px;
	box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
	-moz-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
	-webkit-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
}
.sidebar ul li{float:left}

這樣來區分開css3代碼是不是整潔多了!

引申話題,該同學blog底部還就css3的樣式順序發表了觀點,到底是私有屬性-moz-border-radius放前面還是標準的border-radius放前面,這裡有一篇來自CSS3-TRICKS的《Ordering CSS3 Properties》闡述了為什麼私有屬性要放在標準的前面,把標準的放在最底下。

那麼最終的代碼就是這個樣子的

/*
sidebar border-radius {3px} --------------------------------------------------*/
.main{width:960px;margin:0 auto;}
.sidebar{width:233px;float:left;
	-moz-border-radius:3px;
	-webkit-border-radius:3px;
	border-radius:3px;
	-moz-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
	-webkit-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
	box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
}
.sidebar ul li{float:left}

不知道大家有沒有什麼不同的代碼書寫風格,希望能在評論中得到不同的見地。

PS:為什麼我不喜歡把每個樣式都單獨分成一行?因為…我覺得這樣的代碼可讀性真是太差了,試想,一個類樣式佔了10多行…

38 Responses to 書寫整潔優雅的CSS3代碼

  1. guanxin8977 says:

    坑爹了!

  2. chone says:

    為什麼不選擇對css源文件進行壓縮再發布呢?
    可以關注下 yui compressor

  3. 任平生 says:

    我的習慣是一行一個屬性,css2 和 css3一視同仁

    ps. 似有 -》 私有

  4. Sivan says:

    好文,我現在是CSS3的另起一行,內容合併,沒額外縮進。CSS3屬性多了的話依舊挺亂的。

  5. Sam says:

    我接受不了把全部寫在一行,一定要分行寫,不然我會吐血的。。:(

  6. 聽臨 says:

    ~_~都是看著手冊複製的~~

  7. Pingback: Tweets that mention 書寫整潔優雅的CSS3代碼 - Leeiio Chaos Made. -- Topsy.com

  8. vehiclee says:

    我一般是這樣排的,高寬相關在同一行,邊框相關在同一行,內容相關在同一行,定位相關在同一行,css3里的同一功能不同瀏覽器的在同一行,我覺得這樣比較便於查找

  9. Kars says:

    =.= 每個屬性一行,懶得區分 是不是 CSS3 了、、

  10. Jenux says:

    我會這樣:
    .sidebar{ width:233px; float:left;
    -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px;
    -moz-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
    -webkit-box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
    box-shadow:1px 1px 5px #rgba(0,0,0,0.1);
    }
    屬性之間空格隔開。
    一行太長的話,進行分組分行
    相近的只要不是太長就寫在一行

  11. Alan says:

    我習慣一行一行來,看起來比較清晰,好維護。

  12. gsid says:

    我也來找個錯別字「於是這樣同樣…」 ➡ 「這位同樣」 :mrgreen:
    我現在基本就按照推薦的方法寫

  13. Way says:

    學習了!很好的方法!

  14. willerce says:

    一條屬性一行。
    這樣我感覺我在找屬性時比較方便。

    滾動條用得少,直接用firebug看line num,然後VIM直接 :line num

  15. lingzuer says:

    #el {
    border: 1px solid red;
    }
    我要嚴格按照這種風格寫,不然看著很不清爽。
    至於滾動條,我想可以分為好幾個文件寫,
    打包的時候合併文件就好了。

  16. lingzuer says:

    border屬性前有個tab縮進的。

  17. ZH CEXO says:

    我是每個屬性一行來寫,因為我使用的DW,所以寫得差不多的時候使用DW的「命令 – 應用源格式」,就能把代碼都自動調整為一行的。之後再要修改,靠Firebug讀行號,也不麻煩。

  18. 卜卜口の says:

    🙂 這樣的書寫方式確實很棒!

  19. josephj says:

    每個屬性一行
    並且依照 Alphabetical 做排序(好處是不會重複、團隊開發容易遵循)

    滾動條的問題…
    一個 CSS 文檔是一個 DIV 模塊,所以通常不會超過 100 行、還可以接受
    另外就算不是一個 CSS 一個文檔,編輯器也可以設定適當的收摺。

    • Leeiio says:

      @josephj 模塊化來分割css文件確實是有必要的,但是對於css的屬性順序採用 Alphabetical 其實我覺得不太好,這個只是解決了查看的問題,Mozilla不是有個書寫順序么,我覺得按那個來不錯,形象符合瀏覽器的渲染過程

  20. zwwooooo says:

    我是把css3這些私有的扔到一起……

  21. 異度空間 says:

    主題也太牛了吧,邊欄也能關閉,^_^

  22. 水水 says:

    我一直覺得應該把私有屬性放最後的

  23. MOPVHS says:

    .main{width:960px;margin:0 auto;}

    像這樣多些幾個屬性就會看得眼花…

    .main
    {
    width:960px;
    margin:0 auto;
    }

    習慣這樣了…然後用搜索找~~

  24. Kimcool says:

    我一直覺得這些法不錯,但是還是有點複雜,看老外寫的都挺簡單。

  25. 羅伊 says:

    我也一直嘗試著使用老外的這種寫法,比較規範。

  26. disinfeqt says:

    你是一邊看我的代碼一邊寫的文章吧?

  27. chatry says:

    我覺得不管怎麼寫,第一點要保證便於日後維護

  28. chatry says:

    @chatry 博主這個獲取用戶瀏覽器和操作系統的功能貌似有問題。。我是chrome11,WIN7系統

Leave a Reply

Your email address will not be published. Required fields are marked *