首頁  >  文章  >  web前端  >  提高css性能的方法

提高css性能的方法

不言
不言原創
2018-06-12 15:54:131385瀏覽

這篇文章主要介紹了CSS性能優化提高css性能的方法,不規範的css會導致很多性能問題,所以學習掌握css性能優化技巧是非常必要的,對css性能優化知識感興趣的朋友一起學習吧

不規範的css會導致很多效能問題,這些問題可能在一些小的專案中不夠明顯,但是在大型專案中就會顯現出來。

css匹配原理

在優化css之前我們需要了解下css是怎麼進行工作的,我們都知道css是由選擇器,屬性和屬性值構成的。

我們可能會這樣寫上一行程式碼

//css   
.con .loulan1 p span{ display: block; }   
//html   
<p class="con">   
    <p class="loulan">   
        <p><span>文字</span></p>   
    </p>   
</p>

在這裡我們對con類別裡面的loulan類別裡的p標籤裡面的span標籤進行樣式定義。我說出來都嫌累更別說寫起來了,其實你可以把瀏覽器看成一個人,它渲染起來一定也會浪費效能。

而且css的匹配原理不是從左到右的,而是從右到左的,也就是說我們的這行程式碼裡面,先查找到頁裡面所有的span元素形成一個集合,再在所有的span元素往上查找,看看有多span的父元素是p元素或父元素的父元素是p元素或......慢慢尋找,把父元素不是p元素的刪去,再往上找看集合裡的有p元素又多少它的父元素的類別是loulan...瀏覽器說:我好累...

其實呢瀏覽器從右到左進行查找的好處是為了儘早過濾掉一些無關的樣式規則和元素。而Firefox 稱這種查找方式為 keyselector(關鍵字查詢),所謂的關鍵字就是樣式規則中最後(最右邊)的規則,上面的 key 是 span。人家本來是為了能盡快過濾到一些無關樣式規則的,我們這裡缺一層套一層,層層不停歇。所以只是想定義一個span的樣式在span上加個類豈不是更好。有人這時要說了,那樣是需要在每個元素上都加上類別嗎?那肯定不是必須的,只不過我們要了解瀏覽器是怎麼查找匹配的,然後結合現在的結構來做出一​​個最好的最方便的寫法。

//css 
.loulanSpan{ display: block; }   
//html 
<p class="con">   
    <p class="loulan">   
        <p><span class="loulanSpan">文字</span></p>   
    </p>   
</p>

css選擇器權值

#這裡說下CSS的ID Class Tag選擇器的權值,也就是他們的優先權,權值越大,優先權越高

ID:100

Class:10

Tag:1

有了上面兩個的基礎我們再詳細說下應該怎樣來優化css提高性能

1,減少css嵌套,最好不要套三層以上,一般情況下塊級元素加上類,裡面的內聯元素不用加,css寫的時候塊級class套內聯tag,這樣不僅可以減少css檔案大小,還能減少效能浪費。

2,不要在ID選擇器前面進行嵌套,ID本來就是唯一的而且人家權值那麼大,前方嵌套完全是浪費性能。

3,建立公共樣式類,把長段相同樣式提取出來作為公共類別使用,例如我們常用的清除浮動,單行超出顯示省略號等等等,當然如果你使用sass,繼承會讓你更方便,同時我是比較提倡使用sass的,之後一定也會寫一篇sass的部落格。

4,縮寫css,其中包括縮寫maigin,padding,顏色值等等,要是有兩個或兩個以上的margin-****,寫成margin: * * * *有助於文件大小。

5,減少通配符*或類似[hidden="true"]這類選擇器的使用,挨個查找所有...這性能能好嗎?當然重置樣式這些必須的東西是不能少的。

6,有些人喜歡在類別名稱前面加上標籤名稱:p.ty_p 來進行更精確的定位,但是這樣往往效率更差,類別名稱應該在全域範圍除非公用是唯一的,所以這種做法是應該是方便的。

7,巧妙運用css的繼承機制,在css中很多屬性是可以繼承的例如顏色字體等等,父節點定義了,子節點就不需要定義。

8,拆分出公共css文件,對於比較大的項目我們可以將大部分頁​​面的公共結構的樣式提取出來放到單獨css文件裡,這樣一次下載後就放到緩存裡,當然這種做法會增加請求,具體做法應以實際情況而定。

9,不用css表達式,可能大家接觸比較少,但是要記住的是無論我們怎麼酷炫,到了最後都是靜態的,所以表達式只是讓你的程式碼顯得更加酷炫,但是他對效能的浪費可能是超乎你的想像的,因為它並不只是計算一次,一些小的事件可能都會增加它為了有效準確而進行計算求值的次數。

10,少用css rest,可能你會覺得重置樣式是規範,但其實其中有很多的操作是不必要不友善的,有需求有興趣的朋友可以選擇normolize.css

11,cssSprite,合成所有icon圖片,用寬高加上bacgroud-position的背景圖方式顯現出我們要的icon圖,這是一種十分實用的技巧,極大減少了http請求。

當然我們還需要一些善後工作,CSS壓縮(這裡提供一個在線壓縮YUI Compressor ,當然你會用其他工具來壓縮是十分好的),GZIP壓縮,Gzip是一種流行的文件壓縮演算法,詳細做法可以穀歌或百度。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

CSS樣式的覆寫規則

以上是提高css性能的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn