瞭解CSS的查詢匹配原理,讓CSS更簡潔、高效
用了這麼多年的CSS,現在才明白CSS的真正匹配原理,不知道你是否也跟我一樣?看1個簡單的CSS:
DIV#divBox p span.red{color:red;},按習慣我們對這個CSS 的理解是,瀏覽器先查詢id為divBox的DIV元素,當找到後,再找其下的所有p元素,然後再查詢所有span元素,當發現有span的class為red的時候,就應用該style。多麼簡單易懂的原理,可是這個理解卻是完完全全相反、錯誤的。
匹配原理:
瀏覽器CSS匹配不是從左到右進行查詢,而是從右到左進行查詢。比如之前說的 DIV#divBox p span.red{color:red;},瀏覽器的查詢順序如下:
先查詢html中所有class='red'的span元素,找到後,再查詢其父輩元素中是否有p元素,再判斷p的父元素中是否有id為divBox的div元素,如果都存在則匹配上。
瀏覽器從右到左進行查詢的好處是為了儘早過濾掉一些無關的樣式規則和元素。比如如下html和css:
DIV#divBox p span.red{color:red;}
s1
s2
s3
s4
如果按從左到右查詢,哪會先查詢到很多不相關的p和span元素。而如果按從左到右的方式進行查詢,則首先就查詢到的元素。firefox稱這種查詢方式為key selector(關鍵字查詢),所謂的關鍵字就是樣式規則中最後(最右邊)的規則,上面的key就是span.red。
簡潔、高效的CSS:
所謂高效的CSS就是讓瀏覽器在查詢style匹配的元素的時候儘量進行少的查詢,下面列出一些我們常見的寫CSS犯一些低效錯誤(也是我以前常常犯的錯誤,還老以為這樣寫才是高效的):
1.不要在ID選擇器前使用標籤名
一般寫法:DIV#divBox
更好寫法:#divBox
解釋: 因為ID選擇器是唯一的,加上div反而增加不必要的匹配。
2.不要再class選擇器前使用標籤名
一般寫法:span.red
更好寫法:.red
解釋: 同第一條,但如果你定義了多個.red,而且在不同的元素下是樣式不一樣,則不能去掉,比如你css檔案中定義如下:
p.red{color:red;}
span.red{color:#ff00ff}
如果是這樣定義的就不要去掉,去掉後就會混淆,不過建議最好不要這樣寫
3.儘量少使用層級關係
一般寫法:#divBox p .red{color:red;}
更好寫法:.red{..}
4.使用class代替層級關係
一般寫法:#divBox ul li a{display:block;}
更好寫法:.block{display:block;}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29212814/viewspace-1141628/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 讓CSS的查詢匹配原理變高效CSS
- CSS簡潔筆記CSS筆記
- 嘗試讓查詢更簡單
- 分享常用的CSS函式,助你寫出更簡潔的程式碼CSS函式
- 讓你的DEVONthink UI 介面更簡潔?devUI
- 如何讓我們的模型更簡潔模型
- CSS 文件流技巧,讓佈局更簡單CSS
- 詳解css媒體查詢CSS
- CSS分頁簡潔樣式CSS
- css - @media 查詢CSS
- 使用window.matchMedia()匹配多個CSS媒體查詢(1)CSS
- 使用window.matchMedia()匹配多個CSS媒體查詢(3)CSS
- 使用window.matchMedia()匹配多個CSS媒體查詢(7)CSS
- 學會 CSS 文件流技巧,讓佈局更簡單CSS
- 讓CSS更完美:PostCSS-modulesCSS
- 我所瞭解的 CSSCSS
- Bartender 4: 讓你的 Mac 選單欄更整潔更高效Mac
- 【JS】裝飾器讓你的程式碼更簡潔JS
- Spring Boot 整合 Lombok 讓程式碼更簡潔Spring BootLombok
- 使用 Laravel Eloquent 構造器讓模型更簡潔Laravel模型
- CSS @media 媒體查詢CSS
- css-媒體查詢CSS
- [譯]HTML&CSS Lesson3: 瞭解CSSHTMLCSS
- 瞭解CSS/CSS3原生變數varCSSS3變數
- css的佈局的定位(瞭解)CSS
- CSS 瞭解一下CSS
- 精簡高效的CSS命名準則/方法CSS
- 9個JavaScript小技巧:寫出更簡潔,高效程式碼JavaScript
- CSS3媒體查詢CSSS3
- 在 CSS 中使用特徵查詢CSS特徵
- Keka Mac:高效簡潔的壓縮解壓工具Mac
- 馬雲:阿里不怕調查 這些只會讓外界更瞭解阿里
- 《HTML5+CSS3網頁設計入門必讀》——2.4 DOCTYPE:形式更簡潔HTMLCSSS3網頁
- 讓 json 解析更簡單高效的 GJSONJSON
- CSS——讓這些“展示”有更好的擴充套件性——媒體查詢CSS套件
- 【CSS】CSS簡介,CSS基礎選擇器詳解CSS
- 更高效、更安全地操作 CSSOM :CSS Typed OMCSS
- 用CSS邊框影像讓你的網站更漂亮CSS網站