CSS渲染速度的提高方法

來源:互聯網
上載者:User

網頁開啟與瀏覽速度受著多方面因素的影響,客戶網速是一個方面,另外網站開發的編碼方式也將對使用者的電腦產生負擔,在之前的文章中提過這方面的內容。這篇文章主要寫的提高網頁在用戶端瀏覽器的渲染速度的CSS部分。

  一、*{} #page *{} 盡量避開
  由於不同瀏覽器對HTML標籤的解釋有差異,所以最終的網頁效果在不同的瀏覽器中可能是不一樣的,為了消除這方面的風險,設計者通常會在CSS的一個始就把所有標籤的預設屬性全部去除,以達到所有簽標屬性值都統一的效果。所以就有了*萬用字元。*會遍曆所有的標籤;

 Example Source Code
  *{margin:0; padding:0}
  如果這樣寫,頁面中所有的標籤的margin全是0;padding也是0;

 Example Source Code
  #page *{margin:0; padding:0}
  如果這樣寫,在id等於page下邊的所有標籤的margin全是0;padding也是0;
  這樣寫的問題是:
  遍曆會消耗很多的時間,如果你的HTML代碼寫的不規範或是某一簽標沒有必合,這個時間可能還會更長;
  很多的標籤本來就沒有這個屬性或屬性本身就是統一的,那麼更給設定一次,也有時間的開消;
  建議的的解決辦法:
  不要去使用生僻的標籤,因為這些標籤往往在不同瀏覽器中解釋出來的效果不一樣;所以你要儘可能的去使用那些常用的標籤;
  不要使用*;而是把你常用到的這些標籤進行處理;例如:

 Example Source Code
body,li,p,h1{margin:0; padding:0}
  二、濾鏡的一些東西不要去用
  IE的一些濾鏡在FIREFOX中不支援,往往寫一些效果時你還是使用CSS HACK;而濾鏡是一個非常毫資源的東西;特別是一些羽化、陰影和一個前透明的效果;
  例如一個陰影製作效果:

 Example Source Code
  <style>
  body {margin:100px;}
  #login_b {width:200px;height:200px;background:#000;-moz-opacity:0.2; filter:alpha(opacity=20);margin:-30px 0 0 600px; position:absolute;}
  #login_t { z-index:10;border:1px solid #006600;width:200px;height:200px;background:#FFF;margin:-35px 0 0 595px; position:absolute;}
  #info{ background:#009900; height:155px;}
  </style>
  <div id=”info”>
  <div id=”login_t”>test</div>
  <div id=”login_b”></div>
  </div>
  建議的解決辦法:
  能不使用就不要使用,一方面相容問題;很多效果只能在IE中使用;
  就本例而言,如果非要這樣在的效果,建議用圖片作背景;(只說最佳化速度,實際應用還是可以小部分用,有人可能會說,用圖片還多一個HTTP請求呢.
  一個非常好的例子,就是在今年512大地震時,很多網站一夜之間全部變成了灰色,他們只用了一行CSS代碼:

 Example Source Code
  body{filter: gray;}
  但,你會看會看到這些網頁非常的慢,開啟後你的CPU也會飆升,不誇張的說,如果你的電腦配置差,乾死你也不為過。

  三、一個頁面上少用絕對位置
  絕對位置(position:absolute )是網頁布局中很常用到的,特別是作一些浮動效果時,也會讓頁面看起來非常的酷。但網頁中如果使用過多的絕對位置,會讓你的網頁變得非常的慢,這一點上邊FIREFOX表現要比IE還要差。
  例如:

 Example Source Code
  <style>li{ position:absolute;}</style>
  <ul>
  <li style=”left:10px; top:20px”>001</li>
  <li style=”left:30px; top:70px”>001</li>
  <li style=”left:40px; top:50px”>001</li>
  ……
  </ul>
  建議的解決辦法:
  儘可能少用,這個少用的值是多少,也沒有一個非常好的值來說明;還要看絕定定位這個標籤裡邊的內容的多少;在這裡我只能說,這樣寫會有效能問題,少用。
  如果能用變通實現同樣的效果,就用變通的辦法

  四、background 背景圖片的平鋪
  有些網頁的背景或頁面中某塊的背景通常要用到圖片的平鋪,平鋪後就會有平鋪次數的問題,如果是單次還好,如果是多次,就廢了。
  舉個簡單的例子:

  例一:滾動一下你的頁面,看速度怎麼樣?

 Example Source Code
  <div style=”height:8000px; background:url(http://www.xxxxxx.com/01.gif)”></div>
  例二:同樣效果,再試一下這個!

 Example Source Code
  <div style=”height:8000px; background:url(http://www.xxxxxxx.com/01.gif)”></div>
  說明:測試上邊的兩個效果,你的電腦越差越明顯,如果你的電腦配置非常好,你就把上的8000px改成9000000px試一下,如果還不行,就改的更大一些,整死機別罵我!
  建議的作法:
  色彩少的圖片要作成gif圖片;
  平鋪的圖片儘可能大一些,如果是色彩少的GIF圖片,圖片大一些,實際大小也不會大多少;上邊的兩個例子就很好的證明,第一個圖片非常少,第二個圖大較大一些;但速度是非常不一樣的;

  五、讓屬性儘可能多的去繼承
  儘可能讓一些屬性子可以繼承父,而不是覆蓋父;
  簡單的一個例子:

 Example Source Code
  <style>
  a:link,a:visited{color:#0000FF}
  a:hover,a:active{color:#FF0000}
  #page a:link,#page a:visited{ font-weight:bold}
  #page a:hover,#page a:active{ font-style: italic;}
  </style>
  <div><a href=”#”>test</a><div>
  <div id=”page”><a href=”http://www.xxxxx.com/”>xxxxxx.com</a></div>
  <style>
  a:link,a:visited{color:#0000FF}
  a:hover,a:active{color:#FF0000}
  #page a:link,#page a:visited{ font-weight:bold}
  #page a:hover,#page a:active{ font-style: italic;}
  </style>
  <div><a href=”#”>test</a><div>
  <div id=”page”><a href=”http://www.xxxx.com/”>xxxxx.com</a></div>
  六、CSS的路徑別太深:
  例如:

 Example Source Code
  #page #info #tool #sidebar h2{ font-size:12px;}
  七、能簡寫的一些就簡寫:
  例如:

 Example Source Code
  #page{pading-top:10px; padding-right:50px; padding-left:50px; padding-bottom:4px;}
  改成:

 Example Source Code
  #page{padding:10px 50px 4px 50px}
  這個對渲染速度沒有影響;只是少幾個字元;

  八、別放空的的class或沒有的class在HTML代碼中。

  九、float 的應用:
  這個東西我的感覺是如果使用不當,百分百有效能問題,而且還非常的大,但實在不知道怎麼樣能弄一個例子出來;這裡只能建議大家如果不是很明白float是怎麼工作的,還是少使用為妙。
  曾經因為這個把IE乾死過,我寫過一個例子,雖說和這個沒有什麼太大的關係:IE之死__原來與CSS有關

  十、合理的布局
  為什麼這麼說呢,合理的布局,可以改變CSS的寫法以及渲染過程。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.