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

了解CSS的查找匹配原理 讓CSS更簡(jiǎn)潔、高效

開發(fā) 前端
用了這么多年的CSS,現(xiàn)在才明白CSS的真正匹配原理,不知道你是否也跟我一樣?

看1個(gè)簡(jiǎn)單的CSS:

DIV#divBox p span.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)行查找。比如之前說的 DIV#divBox p span.red{color:red;},瀏覽器的查找順序如下:

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

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

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

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

簡(jiǎn)潔、高效的CSS:

所謂高效的CSS就是讓瀏覽器在查找style匹配的元素的時(shí)候盡量進(jìn)行少的查找,下面列出一些我們常見的寫CSS犯一些低效錯(cuò)誤(也是我以前常常犯的錯(cuò)誤,還老以為這樣寫才是高效的):

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

一般寫法:DIV#divBox

更好寫法:#divBox

解釋: 因?yàn)镮D選擇器是唯一的,加上div反而增加不必要的匹配。

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

一般寫法:span.red

更好寫法:.red

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

p.red{color:red;}

span.red{color:#ff00ff}

如果是這樣定義的就不要去掉,去掉后就會(huì)混淆,不過建議***不要這樣寫

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

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

更好寫法:.red{..}

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

一般寫法:#divBox ul li a{display:block;}

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

系列專題:高性能WEB開發(fā)應(yīng)用指南

【編輯推薦】

  1. 高性能WEB開發(fā)之Web性能測(cè)試工具推薦
  2. 強(qiáng)烈推薦40個(gè)優(yōu)秀的免費(fèi)CSS工具
  3. 高性能WEB開發(fā)之JS、CSS的合并壓縮
  4. 10 個(gè)漂亮的CSS 3表單制作教程
  5. 2011年2月8款免費(fèi)HTML和CSS模板推薦
責(zé)任編輯:陳貽新 來源: BearRui的博客
相關(guān)推薦

2011-05-12 10:48:49

CSS清理浮動(dòng)

2010-09-10 15:23:54

CSS匹配CSS

2020-07-24 15:40:51

CSS前端代碼

2024-12-19 09:05:13

Python鏈?zhǔn)秸{(diào)用

2025-02-17 08:50:00

CSS代碼JavaScript

2010-08-31 13:06:45

CSS

2023-03-20 16:18:08

JavascriptCSS前端

2023-11-16 08:55:14

CSS前端

2016-01-13 11:39:52

CSS邊框網(wǎng)站

2010-09-06 09:06:22

CSS

2025-04-29 10:04:41

JavaScripMap代碼

2017-10-29 06:50:30

前端開發(fā)CSSWeb

2025-04-29 02:22:00

Python技巧CLI

2024-11-11 17:00:27

字典壓縮Python代碼

2010-08-31 13:32:12

CSS

2011-12-02 10:19:24

CSS

2012-04-10 10:49:45

WEBCSS

2023-11-06 09:24:14

CSS相對(duì)顏色

2013-03-11 10:30:56

CSSWeb

2019-07-31 10:24:16

JavaScript瀏覽器口袋妖怪
點(diǎn)贊
收藏

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