新聞中心
本文和大家重點(diǎn)討論一下CSS匹配原理的概念,瀏覽器CSS匹配不是從左到右進(jìn)行查找,而是從右到左進(jìn)行查找的,瀏覽器從右到左進(jìn)行查找的好處是為了盡早過(guò)濾掉一些無(wú)關(guān)的樣式規(guī)則和元素。

創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元尼河口做網(wǎng)站,已為上家服務(wù),為尼河口各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
CSS匹配原理
用了這么多年的CSS,現(xiàn)在才明白CSS的真正匹配原理,不知道你是否也跟我一樣?看1個(gè)簡(jiǎn)單的CSS:
viewsourceprint?
- 1DIV#divBoxpspan.red{color:red;}
按習(xí)慣我們對(duì)這個(gè)CSS的理解是,瀏覽器先查找id為divBox的DIV元素,當(dāng)找到后,再找其下的所有p元素,然后再查找所有span元素,當(dāng)發(fā)現(xiàn)有span的class為red的時(shí)候,就應(yīng)用該style。多么簡(jiǎn)單易懂的原理,可是這個(gè)理解卻是完完全全相反、錯(cuò)誤的。
瀏覽器CSS匹配不是從左到右進(jìn)行查找,而是從右到左進(jìn)行查找。比如之前說(shuō)的DIV#divBoxpspan.red{color:red;},瀏覽器的查找順序如下:
先查找html中所有class='red'的span元素,找到后,再查找其父輩元素中是否有p元素,再判斷p的父元素中是否有id為divBox的div元素,如果都存在則匹配上。
瀏覽器從右到左進(jìn)行查找的好處是為了盡早過(guò)濾掉一些無(wú)關(guān)的樣式規(guī)則和元素。比如如下html和css:
viewsourceprint?
- 01
- 02DIV#divBoxpspan.red{color:red;}
- 03
- 04
- 05
- 06
s1 span> p>
- 07
s2 span> p>
- 08
s3 span> p>
- 09
s4 span> p> - 10 div>
- 11 body>
如果按從左到右查找,哪會(huì)先查找到很多不相關(guān)的p和span元素。而如果按從左到右的方式進(jìn)行查找,則首先就查找到 的元素。Firefox稱這種查找方式為keyselector(關(guān)鍵字查詢),所謂的關(guān)鍵字就是樣式規(guī)則中***(最右邊)的規(guī)則,上面的key就是span.red。#p#
簡(jiǎn)潔、高效的CSS寫(xiě)法
所謂高效的CSS就是讓瀏覽器在查找style匹配的元素的時(shí)候盡量進(jìn)行少的查找,下面列出一些我們常見(jiàn)的寫(xiě)CSS犯一些低效錯(cuò)誤(也是我以前常常犯的錯(cuò)誤,還老以為這樣寫(xiě)才是高效的):
◆不要在ID選擇器前使用標(biāo)簽名
一般寫(xiě)法:DIV#divBox
更好寫(xiě)法:#divBox
解釋:因?yàn)镮D選擇器是唯一的,加上div反而增加不必要的匹配。
◆不要再class選擇器前使用標(biāo)簽名
一般寫(xiě)法:span.red
更好寫(xiě)法:.red
解釋:同***條,但如果你定義了多個(gè).red,而且在不同的元素下是樣式不一樣,則不能去掉,比如你css文件中定義如下:
viewsourceprint?
- 1p.red{color:red;}
- 2span.red{color:#ff00ff}
如果是這樣定義的就不要去掉,去掉后就會(huì)混淆,不過(guò)建議***不要這樣寫(xiě)。
◆盡量少使用層級(jí)關(guān)系
一般寫(xiě)法:#divBoxp.red{color:red;}
更好寫(xiě)法:.red{..}
◆使用class代替層級(jí)關(guān)系
一般寫(xiě)法:#divBoxullia{display:block;}
更好寫(xiě)法:.block{display:block;}
Firefox和google的2篇相關(guān)css解釋的文章,供大家參考:
googlepage-speed:http://code.google.com/intl/zh-CN/speed/page-speed/docs/rendering.html
mozillaFirefox:https://developer.mozilla.org/en/Writing_Efficient_CSS
網(wǎng)站標(biāo)題:深入學(xué)習(xí)CSS匹配原理
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/cospjsp.html


咨詢
建站咨詢
