自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

掌握CSS匹配原理,編寫完美CSS代碼

開發(fā) 前端
大家應(yīng)該了解瀏覽器CSS匹配不是從左到右進(jìn)行查找,而是從右到左進(jìn)行查找,這里就向大家描述一下CSS匹配原理和如何編寫簡潔高效的CSS代碼。

本節(jié)和大家重點討論一下CSS查找匹配原理和簡潔高效的CSS代碼的編寫,所謂高效的CSS就是讓瀏覽器在查找style匹配的元素的時候盡量進(jìn)行少的查找,相信本文介紹一定會讓你有所收獲的。

了解CSS的查找匹配原理,寫更簡潔高效的CSS代碼

使用了這么多年的CSS,現(xiàn)在才明白CSS的真正匹配原理,不知道你是否也跟我一樣?看1個簡單的CSS:

 

  1. DIV#divBoxpspan.red{color:red;}  
  2.  

按習(xí)慣我們對這個CSS的理解是,瀏覽器先查找id為divBox的DIV元素,當(dāng)找到后,再找其下的所有p元素,然后再查找所有span元素,當(dāng)發(fā)現(xiàn)有span的class為red的時候,就應(yīng)用該style。多么簡單易懂的原理,可是這個理解卻是完完全全相反、錯誤的。

CSS匹配原理:

瀏覽器CSS匹配不是從左到右進(jìn)行查找,而是從右到左進(jìn)行查找。比如之前說的DIV#divBoxpspan.red{color:red;},瀏覽器的查找順序如下:

先查找html中所有class='red'的span元素,找到后,再查找其父輩元素中是否有p元素,再判斷p的父元素中是否有id為divBox的div元素,如果都存在則CSS匹配上。

瀏覽器從右到左進(jìn)行查找的好處是為了盡早過濾掉一些無關(guān)的樣式規(guī)則和元素。比如如下html和css:

  1. <style> 
  2. DIV#divBoxpspan.red{  
  3. color:red;  
  4. }  
  5. <style> 
  6. <body> 
  7. <dividdivid="divBox"> 
  8. <p><span>s1</span></p> 
  9. <p><span>s2</span></p> 
  10. <p><span>s3</span></p> 
  11. <p><spanclassspanclass='red'>s4</span></p> 
  12. </div> 
  13. </body> 
  14.  

如果按從左到右查找,哪會先查找到很多不相關(guān)的p和span元素。而如果按從左到右的方式進(jìn)行查找,則首先就查找到<spanclass='red'>的元素。firefox稱這種查找方式為keyselector(關(guān)鍵字查詢),所謂的關(guān)鍵字就是樣式規(guī)則中最后(最右邊)的規(guī)則,上面的key就是span.red。

簡潔、高效的CSS:

所謂高效的CSS就是讓瀏覽器在查找style匹配的元素的時候盡量進(jìn)行少的查找,下面列出一些我們常見的寫CSS犯一些低效錯誤:

1.不要在ID選擇器前使用標(biāo)簽名

一般寫法:DIV#divBox

更好寫法:#divBox

解釋:因為ID選擇器是唯一的,加上div反而增加不必要的CSS匹配。

2.不要再class選擇器前使用標(biāo)簽名

一般寫法:span.red

更好寫法:.red

解釋:同第一條,但如果你定義了多個.red,而且在不同的元素下是樣式不一樣,則不能去掉,比如你css文件中定義如下: 

  1. p.red{color:red;}  
  2. span.red{color:#ff00ff}  
  3.  

如果是這樣定義的就不要去掉,去掉后就會混淆,不過建議最好不要這樣寫

3.盡量少使用層級關(guān)系

一般寫法:#divBoxp.red{color:red;}

更好寫法:.red{..}

4.使用class代替層級關(guān)系

一般寫法:#divBoxullia{display:block;}

更好寫法:.block{display:block;}

【編輯推薦】

  1. CSS中display屬性的妙用 
  2. 常用CSS+DIV排版技術(shù)用法剖析
  3. CSS中border和clear兩大屬性用法揭秘
  4. 實例解析CSS DIV絕對定位與固定定位用法
  5. 解讀DIV CSS網(wǎng)頁布局中CSS無效十個原因


 

責(zé)任編輯:佚名 來源: java3z.com
相關(guān)推薦

2010-09-01 11:08:09

CSS

2010-09-03 16:07:48

CSS

2010-08-31 13:32:12

CSS

2010-08-31 13:06:45

CSS

2011-04-29 10:22:49

CSS高性能Web開發(fā)

2010-09-07 13:04:14

CSS Hack

2011-05-27 11:01:10

DreamweaverCSS

2010-08-26 15:27:57

CSS

2010-09-01 15:28:11

CSSexpression

2017-08-28 14:58:19

CSSFlexbox注釋格式優(yōu)化

2016-09-07 19:58:47

CSS代碼Web

2023-07-28 10:21:46

CSS前端

2017-09-25 21:00:44

代碼開發(fā)完美

2010-09-09 13:59:55

CSS

2010-09-13 10:11:06

CSSDWMX

2023-10-24 07:48:14

CSSobject-fit

2010-09-16 15:32:20

CSS選擇器

2017-10-10 16:28:51

前端CSS建議

2010-09-14 13:49:38

CSS代碼

2025-01-10 08:38:16

點贊
收藏

51CTO技術(shù)棧公眾號