Quantcast
Channel: WFU BLOG
Viewing all articles
Browse latest Browse all 577

自訂 CSS 壓縮格式化樣式+排列順序﹍Sublime Text 外掛

$
0
0
多年前寫過一篇「CSS 撰寫技巧及規範」,分享了習慣的 CSS 維護作法。長時間使用下來,作業若要更有效率的話,我還想再進一步優化,例如:
  • 經過壓縮的 CSS 碼,不要沒有任何空格,想辦法增加可讀性。
  • CSS 屬性希望能完全按照自訂的邏輯來排序,把可能需要修改數值的屬性放在前面,這樣維護比較方便。
以上這些需求最好不要手動,而是能用程式自動執行,也不要像前一篇依靠線上 CSS 轉換工具,因為打開網頁、手動複製貼上也要花額外的操作時間。 因為平常處理 HTML/CSS/JS 都是使用 Sublime Text(以下簡稱 ST) 3/4,所以本篇的解決方案會使用 ST 套件自動執行,只要按下自訂熱鍵,就能瞬間讓原本凌亂的 CSS 碼,依照自訂規則壓縮、格式化、按指定順序自動排列。

一、外掛效果說明

假設原本雜亂的 CSS 碼經過美化工具轉換後,長得像這樣: #nav { background: #fff; display: block; } #nav a { color: #555; line-height: 40px; position: relative; display: inline-block; min-width: 35px; text-align: center; text-decoration: none; border: 0; padding: 0 15px; }雖然說看起來美觀、一目了然,但我個人覺得維護上很不方便,因為螢幕範圍能顯示的資訊太少,以上兩筆 CSS 資料就佔據了 15 行的空間,要移動到其他維護的 CSS 碼時,需要花費很多時間不斷往上、往下捲動螢幕。 1. 自訂壓縮格式所以我習慣將單筆 CSS 資料壓縮成一行以節省空間,以前介紹過的 CSS 線上工具「code beautifier」,可作到這點: #nav{background:#fff;display:block;} #nav a{color:#555;line-height:40px;position:relative;display:inline-block;min-width:35px;text-align:center;text-decoration:none;border:0;padding:0 15px;}不過缺點是,所有字符全部黏在一起,缺乏可讀性。 我找到的解決方案是 Sublime Text 套件「CSS Format」,提供了多種格式,可美化也可壓縮,其中的 "Compact"格式正合我意,轉換後的效果如下: #nav { background: #fff; display: block; } #nav a { color: #555; line-height: 40px; position: relative; display: inline-block; min-width: 35px; text-align: center; text-decoration: none; border: 0; padding: 0 15px; }以上程式碼可看出,CSS 選擇器、屬性、數值都多了空格隔開,比全部壓縮成一團容易分辨多了。 2. 自訂屬性排列方式 CSS 維護久了就會希望,重要的屬性能一眼看到,且比較可能修改的屬性與數值能排列在前面。前端工程師很常做的一個動作是,將別人網頁上看到不錯的 CSS 效果"借"過來用,而整串 CSS 碼複製過來後,由於屬性排列方式跟習慣不同,常常要自己手動調整順序也是很花時間。 自從找到 Sublime Text 這個套件「CleanCSS」後,這件事就再也不必手動,按個熱鍵 CSS 全部按設定好的順序自動排列整齊。 例如我會希望最重要的 position、display 出現在最前面,接著是最常需要修改的數值 margin、padding、width、height 等,接著是有可能要調整的 color、background、font-size 等,其他不需要修改的放最後面。 經以上我的需求利用此套件進行轉換,結果將如以下,效果很滿意: #nav { display: block; background: #fff; } #nav a { position: relative; display: inline-block; min-width: 35px; padding: 0 15px; color: #555; line-height: 40px; text-align: center; text-decoration: none; border: 0; }

二、ST 套件 CSS Format

1. 安裝進入 ST → 按 Ctrl+Shift+P→ 輸入 install→ 選擇「Package Control: Install Package」→ 輸入 CSS Format進行安裝。 2. 說明從官方網頁「CSS Format」可看到幾種主要的 CSS 格式:
  • Expanded:展開模式,最美觀的格式
  • Compact:簡潔模式,兼顧美觀與壓縮
  • Compressed:壓縮模式,最節省空間
了解以上這幾個單字後,才知道接下來要如何設定。 3. 設定進入 ST → Preference → Package Settings → CSS Format → Key Bindings - Example,可看到此套件提供的熱鍵設定範例,例如我習慣使用的 Compact 模式: { "keys": ["ctrl+alt+]"], "command": "css_format", "args": { "action": "compact" } },以上範例碼可自行修改熱鍵按法,action的數值改成想要的格式,然後複製起來。 接下來 Preference → Package Settings → CSS Format → Key Bindings - User,會開啟 ST 系統的自訂熱鍵設定檔,將前面的範例碼,複製到此檔參數的最前面,存檔後可立即生效。 4. 操作 CSS Format 的支援度滿不錯的,無論是 HTML/CSS 檔案都能使用,例如開啟一個 .css 檔後,按下前面設定的熱鍵 ctrl+alt+],就會將 CSS 碼轉換為 Compact 格式。

三、ST 套件 CleanCSS

1. 安裝進入 ST → 按 Ctrl+Shift+P→ 輸入 install→ 選擇「Package Control: Install Package」→ 輸入 CleanCSS進行安裝。 2. 說明從官方網頁「CleanCSS」→ Configuration,這裡說明了如何設定參數,可用 Chrome 翻成中文看說明。 對我而言,以下這些參數都必須改成 false 才能符合版面的需求:
  • add_space_between_categories
  • add_space_between_rules
  • vertically_align_selector_property_values
3. 使用者設定檔進入 ST → Preference → Package Settings → CleanCSS → Settings - Default,可看到此套件的所有預設值,將全部內容複製起來。 Preference → Package Settings → CleanCSS → Settings - User,會開啟使用者設定檔,將剛剛的內容全部貼上,修改參數後存檔。 此套件已經預設了許多 CSS 參數的優先順序,基本上設定的不錯,沒有特別需求的話不一定要改。 而我前面提過,"會希望最重要的 position、display 出現在最前面..."等等,那麼就必須調整設定檔 "categories"中的內容,請自行調換所有想調整的參數順序,然後存檔即可。 4. 設定熱鍵官網說明的「Usage」部份,提到了此套件的熱鍵如何設定: {"keys":["f6"], "command" : "clean_css"},以上範例碼可自行修改熱鍵按法,然後複製起來。 接下來 Preference → Key Bindings,會開啟 ST 系統的自訂熱鍵設定檔,將前面的範例碼,複製到此檔參數的最前面,存檔後可立即生效。 5. 操作 CleanCSS 經測試後,操作相容性比較差,必須在嚴格的條件下才能生效,如果使用技巧不對,會覺得相當難用:
  • 不能跟 HTML 碼混合使用
  • CSS 碼如果未經美化的話,格式不對就不會生效
所以要使用 CleanCSS 調整屬性順序的話,需要先將 CSS 碼格式化:
  • 如果 ST 有裝「HTML/CSS/JS Prettify」的話,可以先執行一次將 CSS 碼美化
  • 或者有裝前面「CSS Format」套件的話,可以為 Expanded 模式設定一個熱鍵,先執行此模式進行 CSS 美化
  • 然後再執行「CleanCSS」的熱鍵,就能自動調整 CSS 屬性順序。

四、補充

以下補充一些使用心得:
  • 先執行 CleanCSS 後,會自動產生第一行空白,我找不到參數設定可以避免此不必要的現象。
  • 不過接著執行 CSS Format 後,會自動移除第一行空白
  • 所以依照這樣的順序執行,流程就非常流暢了。
更多 Sublime Text 相關文章:

Viewing all articles
Browse latest Browse all 577

Trending Articles