亚洲AV无码乱码在线观看不卡|最新大伊香蕉精品视频在线|亚洲不卡av一区二区|国产美女无遮挡免费

登錄論壇 | 注冊會員 設(shè)為首頁 | 收藏本站
當(dāng)前位置 : 首頁>軟件學(xué)院>程序開發(fā)>CSS>正文
 
css的效率和瀏覽器渲染的速度

http://www.yibo1263.com 2010-5-31 7:46:17  來源:東北IT網(wǎng)  編輯:葉子
 
瀏覽器如何讀取你的CSS選擇器有一個很重要的原則,那就是它們從右到左讀取。這意味這像 ul > li a[title="home"] 這樣的選擇器,a[title="home"] 將是最先被讀取的。

我承認(rèn)我并不經(jīng)常想這個問題......我們寫的css的效率是怎么樣的呢,瀏覽器渲染的速度又如何呢?


這是應(yīng)該是瀏覽器開發(fā)者應(yīng)該關(guān)心的(頁面加載更快,用戶就會更愉快)。Mozilla有一篇文章: about best practices . Google 當(dāng)然也很關(guān)心這個問題,他們也有這樣一篇文章:Optimize browser rendering 。


讓我們了解下他們主要倡導(dǎo)的東東,然后討論他們的實用性。


從右到左


瀏覽器如何讀取你的CSS選擇器有一個很重要的原則,那就是它們從右到左讀取。這意味這像 ul > li a[title="home"] 這樣的選擇器,a[title="home"] 將是最先被讀取的。這一部分通常被稱為 “key selector” (可否稱為“目標(biāo)選擇器” -_-!)選擇器的最后一部分,也是被選擇的標(biāo)簽。


ID's 是最有效率的,通用符是最慢的


有四種目標(biāo)選擇器:ID, class, tag和通用符?聪滤麄兏髯缘男嗜绾:
#main-navigation { } /* ID (最快) */
body.home #page-wrap { } /* ID */
.main-navigation { } /* Class */
ul li a.current { } /* Class *
ul { } /* Tag */
ul li a { } /* Tag */
* { } /* Universal (最慢) */
#content [title='home'] /* Universal */ 然后我們結(jié)合從右到左和目標(biāo)選擇器的概念,我們可以知道下面這個選擇器并不高效:
#main-nav > li { } /* 看著很快實則很慢 */
盡管這讓人有點費解......因為ID's是最高效的,瀏覽器可以通過ID迅速的找到 li。但事實是,li 標(biāo)簽是被先讀取的。


不要用標(biāo)簽修飾


死也不要像下面這樣干:





ul#main-navigation { }

ID's 是唯一的,所以不需要用標(biāo)簽修飾,這只會讓它更低效。
如果你可以避免的話,也不要用它修飾 class 。class 不是唯一的,所以理論上你可以把它用在不同的標(biāo)簽。如果你愿意的話,你可以用標(biāo)簽控制不同的樣式,這樣你可能需要標(biāo)簽修飾(比如:li.first),但這樣做的人很少,所以,don't .


絕對沒有比用后代選擇器更糟糕的做法了
David Hyatt:
后代選擇器是CSS里最昂貴的選擇器,昂貴得可怕——特別是當(dāng)它放在標(biāo)簽和通用符后面時。
就如下面這個東東一樣,絕對的效率毒瘤:





html body ul li a { }

一個選擇器渲染失敗比這個選擇器被渲染更高效


我不是很確定是否有更好的證據(jù)去證明這一點,因為如果你有大量的選擇器在CSS樣式表里無法找到,這樣的事情貌似很離奇,但一點必需注意的是,從右到左的解釋一個選擇器來說,一旦它找不到,那它就會停止嘗試。然而如果它找到了,那它就需要花更多精力去解釋了。


試想一下為何你這樣寫選擇器


思考下這東東:





#main-navigation li a { font-family: Georgia, Serif; }

你可能不需要從 a 選擇器開始(如果你只是想換個字體)。下面這個可能更高效些:





#main-navigation { font-family: Georgia, Serif; }

實用性


還刻前面提到的Mozilla的一篇文章?已經(jīng)有十年了。事實是:計算機比十年前變慢了(不是我理解錯了,還是作者想說現(xiàn)在的WEB越來越復(fù)雜了)。我感覺這東東在當(dāng)年似乎還更受重視。十年前我還是個21歲的英俊小生,當(dāng)然我不覺得那里我會認(rèn)識css這東東。所以我也無法跟你講以前的情況......但我覺得渲染效率的問題之所以沒被重視是因為這從來就不是一個大問題。
這是我的一些看法:不管怎樣上面提到的東東都是有意義的,你可以按照上面的方法去做,因為它并不會限制你的CSS制作。但你也沒必要太教條主義。如果你是個完美主義者,而之前又沒有考慮過那東東,那是時候去重新看一下你之前寫的一些樣式是否有改進(jìn)的地方了。如果你沒發(fā)現(xiàn)你的網(wǎng)站明顯的渲染緩慢,那大可別太在意,在以后的工作中多注意就行了。


超級快速,零實用性


我們知道ID's 是最高效的選擇器。當(dāng)你想讓渲染速度最高效時,你可能會給每個獨立的標(biāo)簽配置一個ID,然后用這些ID寫樣式。那會超級快,也超級荒唐。這樣的結(jié)果是語義極差,維護(hù)難到了極點。即使在核心部分你也不應(yīng)該見過這樣做的。

本新聞共2頁,當(dāng)前在第1頁  1  2  

 
收藏】【打印】【進(jìn)入論壇
  相關(guān)文章:

·CSS3 Media Queries 詳解
·CSS實例教程:非浮動區(qū)域設(shè)置寬度
·關(guān)于CSS HACK 解決兼容的寫法 
·小議使用“完整”的CSS的缺點
·關(guān)于CSS不透明的詳細(xì)介紹 
·CSS中設(shè)置段落間距的方法
·用css網(wǎng)站布局之十步實錄
·DIV+CSS布局代碼精簡對SEO的影響 
·CSS教程:網(wǎng)頁中英文字體的設(shè)置 
·css3文本陰影屬性text-shadow說明 
·css3陰影屬性box-shadow注意事項 

 
 
 
 
最新文章

中關(guān)村艷照門女主角詳記錄高清組圖 
大連護(hù)士門大尺度艷照高清組圖
iPhone女孩微博爆紅 最寶貴東西換iPhon
反恐精英之父內(nèi)維爾:改變電腦游戲銷售
團購網(wǎng)站黎明之前:中國市場慘烈廝殺不
團購鼻祖Groupon中國揭秘:快與慢的商業(yè)
Spil Games發(fā)布新的品牌形象
1800配置一臺主機 不要顯示器
聯(lián)想V360筆記本模特寫真
愛國者第四代移動硬盤將面市、低電壓保

 
推薦文章
1
2
3
4
5
6
7
8
9
10
iPhone女孩微博爆紅 最寶貴東西換
大連護(hù)士門大尺度艷照高清組圖
中關(guān)村艷照門女主角詳記錄高清組
蘋果員工中毒門
宮如敏不雅照瘋傳 看張馨予韓一菲
深耕市場 永續(xù)經(jīng)營——專訪百腦匯
優(yōu)派專業(yè)電子書 讓您回家旅途多姿
揭曉百萬大獎三星bada魅力綻放中
大明龍權(quán)“江湖英雄會”全國PK大
永恒之塔校園達(dá)人挑戰(zhàn)賽完美落幕
八卦圖解 More>>
iPhone女孩微博爆紅 最寶貴東西換 大連護(hù)士門大尺度艷照高清組圖
中關(guān)村艷照門女主角詳記錄高清組 宮如敏不雅照瘋傳 看張馨予韓一菲