Web前端開發最佳實踐(8):還沒有給CSS樣式排序?其實你可以更專業一些


前言

CSS樣式排序是指按照一定的規則排列CSS樣式屬性的定義,排序並不會影響CSS樣式的功能和性能,只是讓代碼看起來更加整潔。CSS代碼的邏輯性並不強,一般的開發者寫CSS樣式也很隨意,所以如果不借助工具,不太容易按照既定的順序來定義CSS屬性,這是前端程序員很少給CSS樣式屬性排序的最主要原因。

盡管給CSS樣式屬性排序需要花費一些精力,但從代碼的可讀性和可維護性角度來考慮,這些付出還是值得的。如果CSS屬性按照一定的規則排序,在開發過程中可以防止屬性的重復定義,代碼的檢查者也能很清晰地查看CSS樣式定義,更關鍵的是后續維護過程中能快速定位特定的樣式屬性。國外有人做過一個調查,該調查顯示有超過60%的開發者會給CSS樣式排序。可見業內大部分的開發者對CSS樣式屬性排序持有肯定的態度,只是在排序的方式上會有一定的分歧:大約有45%的人是按照類型分組排序,有14%的人是按照字母序排列,還有2%的人按照定義的長度排序。下面分別介紹這幾種排序的方式以及其優缺點。

常見的CSS定義排序方式

1. 按類型分組排序

這種排序方式最復雜,卻也是最合理的方式。國外著名的Web前端專家Andy Ford推薦過一種按照類型分組排序的方式,他把CSS屬性分為7大類:顯示與浮動(Diplay&Flow)、定位(Positioning)、尺寸(Dimensions)、邊框相關屬性(MarginsPaddingBordersOutline)、字體樣式(Typographic Styles)、背景(Backgrounds)、其他樣式(OpacityCursorsGenerated Content)。以此規則,Andy Ford給出了一個例子,基本包含了CSS2.1中所有的樣式屬性。可以通過瀏覽他的文章 查看完整的例子代碼。

隨着CSS3的普及,CSS樣式中也添加了很多新的屬性,這些新的屬性也可以按照如上的規則歸類到不同的類別中,如:text- shadow可以歸類到字體樣式中;border-radius可以歸類為邊框相關屬性等。

2. 按字母序排列

按字母序排列的方式也是CSS排序中使用較多的一種方式。相比較於前一種方式,這種方式的優點是排列規則簡單。按字母序排列的規則是按照屬性的首字母從A到Z排列,忽略瀏覽器前綴(如:-webkit--moz--o-以及-ms-)。如下是一個按照字母序排列的例子:

#element {
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    color: #FFF;  
    font-family: "Times New Roman", serif;  
    font-weight: bold;  
    height: 300px;  
    line-height: 20px;  
    top: 10px;  
    width: 100px;  
} 

3. 按定義長度排序

這種排序方式是使用較少的一種方式。和按照字母序排列的方式類似,這種方式是按照樣式定義的字符長度排列。排列的方式可以從長到短,也可以是從短到長。如下的例子將按照定義由長到短排列:

#element {
    font-family: "Times New Roman", serif;  
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    font-weight: bold;  
    line-height: 20px;  
    height: 300px;  
    width: 100px;  
    color: #FFF;  
    top: 10px;  
} 

以上三種常見的CSS排序方式中,第一種最為合理,代碼的可讀性和可維護性也是最好的,但是規則相對復雜。其余兩種方式規則簡單,但僅僅是讓代碼看起來更整潔,並沒有提高多少代碼的可維護性。在實際的應用中,推薦使用第一種排列方式。

借助工具

當然,如果純粹是靠前端工程師在編寫代碼過程中按照一定的規則來排列CSS樣式肯定是有難度的,並且也不方便頻繁地修改代碼。最佳的方式是在編寫代碼過程中按照最有效率的方式來編寫,在編寫完成並提交代碼時使用工具給CSS排序。這樣即提高了開發效率又方便了后續代碼的閱讀和維護。推薦一款免費的CSS排序工具:CSScomb 。CSScomb提供了在線工具及主流代碼編輯器的插件。

CSScomb的排序方式類似如上的第一種方式,但是默認規則稍有不同,當然CSScomb容許開發者自定義排序方式。下面以WebStorm為例,演示CSScomb的使用方法以及效果對比。

下載的CSScomb工具包,根據教程安裝插件到WebStorm,然后就可以直接使用CSScomb了。使用的方式也很簡單,在CSS樣式文件上點擊右鍵選擇CSScomb工具,如下圖所示。

Imgur

圖 WebStorm編輯器中使用CSScomb插件

看看排序的實際效果。如下是排序前的代碼片段:

Imgur

圖 示例樣式代碼片段

下圖是排序后的代碼片段。

Imgur

圖 示例樣式代碼經過CSScomb排序后的效果

可以看到,排序后,不只是樣式定義的順序改變,每個分組之間還用了一個空行分割。提高了CSS代碼的可讀性和可維護性。

CSScomb提供了大量的其他工具的集成解決方案,如grunt對應的有grunt-csscomb,sublime編輯器有對應的sublime-csscomb插件,等等。

總結

總結以上介紹的CSS樣式規則排序的實踐,可以歸納為如下四點:

  • 給CSS樣式排序
  • 推薦按樣式屬性功能分組排序
  • 推薦在CSS樣式代碼編寫完成並准備簽入的時候排序
  • 使用如CSScomb等工具排序

附錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM