CSS程式碼重構與最佳化之路

佚名發表於2016-01-07

網站最佳化 程式碼最佳化 網站載入速度最佳化

寫CSS的同學們往往會體會到,隨著專案規模的增加,專案中的CSS程式碼也會越來越多,如果沒有及時對CSS程式碼進行維護,CSS程式碼不斷會越來越多。CSS程式碼交錯複雜,像一張龐大的蜘蛛網分佈在網站的各個位置,你不知道修改這行程式碼會有什麼影響,所以如果有修改或增加新功能時,開發人員往往不敢去刪除舊的冗餘的程式碼,而保險地增加新程式碼,最終的壞處就是專案中的CSS會越來越多,最終陷入無底洞。

CSS程式碼重構的目的

我們寫CSS程式碼時,不僅僅只是完成頁面設計的效果,還應該讓CSS程式碼易於管理,維護。我們對CSS程式碼重構主要有兩個目的:

1、提高程式碼效能

2、提高程式碼的可維護性

提高程式碼效能

提高CSS程式碼效能主要有兩個點:

1、提高頁面的載入效能

提高頁面的載入效能,簡單說就是減小CSS檔案的大小,提高頁面的載入速度,儘可以的利用http快取

2、提高CSS程式碼效能

不同的CSS程式碼,瀏覽器對其解析的速度也是不一樣的,如何提高瀏覽器解析CSS程式碼的速度也是我們要考慮的

提高程式碼的可維護性

提高CSS程式碼的可維護性主要是體現在下面幾點:

1、可重用性

一般來說,一個專案的整體設計風格是一致的,頁面中肯定有幾個風格一致但有些許不同的模組,如何在儘可能多地重用CSS程式碼,儘可能少地增加新程式碼,這是CSS程式碼中非常重要的一點。如果CSS程式碼的重用性高,我們可能只需要寫一些不一樣的地方,對頁面效能和可維護性、提高開發效率都有很大的幫助。

2、可擴充套件性

如果產品增加了某個功能,我們應該保證新增加的CSS程式碼不會影響到舊的CSS程式碼和頁面,並且儘可能少地增加新程式碼而重用舊程式碼。

3、可修改性

如果某個模組產品經理覺得要修改樣式,或者要刪掉它,如果沒有規劃好相應的CSS程式碼,過了一段時間之後,開發人員可能已經不記得這段程式碼作用了幾個地方,不敢修改或刪除它,這樣下去CSS程式碼也就越來越多,影響了頁面的效能,還造成了程式碼的複雜度。

CSS程式碼重構的基本方法

前面說到了CSS程式碼重構的目的,現在我們來說說一些如何達到這些目的的一些基本方法,這些方法都是易於理解,容易實施的一些手段,大家平時可能也不知不覺地在使用它。

提高CSS效能的手段

首先說說如何提高CSS效能,根據頁面的載入效能和CSS程式碼效能,主要總結有下面幾點:

1、儘量將樣式寫在單獨的css檔案裡面,在head元素中引用

有時候為了圖方便或者快速搞定功能,我們可能會直接將樣式寫在頁面的style標籤或者直接內聯在元素上,這樣雖然簡單方便,但是非常不利於日後的維護。將程式碼寫成單獨的css檔案有幾點好處:

(1)內容和樣式分離,易於管理和維護

(2)減少頁面體積

(3)css檔案可以被快取、重用,維護成本降低

2、不使用@import

這條手段已經是眾所周知,這裡簡單提一下,@import影響css檔案的載入速度

3、避免使用複雜的選擇器,層級越少越好

有時候專案的模組越來越多,功能越來越複雜,我們寫的CSS選擇器會內套多層,越來越複雜。

建議選擇器的巢狀最好不要超過三層,比如:

  • header.logo.text{}

可以最佳化成

  • haeder.logo-text{}

簡潔的選擇器不僅可以減少css檔案大小,提高頁面的載入效能,瀏覽器解析時也會更加高效,也會提高開發人員的開發效率,降低了維護成本。

4、精簡頁面的樣式檔案,去掉不用的樣式

很多時候,我們會把所有的樣式檔案合併成一個檔案,但是這樣有一個問題:很多其他頁面的CSS同時引用到當前頁面中,而當前頁面並沒有用到它們,這種情況會造成兩個問題:

(1)樣式檔案偏大,影響載入速度

(2)瀏覽器會進行多餘的樣式匹配,影響渲染時間。

正確的處理方法是根據當前頁面需要的css去合併那些當前頁面用到的CSS檔案。

PS:合併成一個檔案有一個優點:樣式檔案會被瀏覽器快取,進入到其他頁面樣式檔案不用再去下載。這條規則應根據場景來區別對待,如果是大專案,應該合併成不同的樣式檔案,如果是簡單的專案,建議合併成一個檔案即可。如果無法確認專案規模,建議分開成不同的樣式檔案,日後要合併也比較方便。

5、利用CSS繼承減少程式碼量

我們知道有一部分CSS程式碼是可以繼承的,如果父元素已經設定了該樣式,子元素就不需要去設定該樣式,這個也是提高效能的行之有效的方法。

常見的可以繼承的屬性比如:

color,font-size,font-family等等

不可繼承的比如:

position,display,float等

大家可以檢視CSS參考手冊

相關文章