成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入學習CSS匹配原理

開發 前端
你對CSS匹配原理是否了解,這里和大家分享一下,瀏覽器CSS匹配不是從左到右進行查找,而是從右到左進行查找的,相信本文介紹一定會讓你有所收獲。

本文和大家重點討論一下CSS匹配原理的概念,瀏覽器CSS匹配不是從左到右進行查找,而是從右到左進行查找的,瀏覽器從右到左進行查找的好處是為了盡早過濾掉一些無關的樣式規則和元素。

CSS匹配原理

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

viewsourceprint?

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

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

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

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

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

viewsourceprint?

  1. 01<style> 
  2.  
  3. 02DIV#divBoxpspan.red{color:red;}  
  4.  
  5. 03<style> 
  6.  
  7. 04<body> 
  8.  
  9. 05<dividdivid="divBox"> 
  10.  
  11. 06<p><span>s1span>p> 
  12.  
  13. 07<p><span>s2span>p> 
  14.  
  15. 08<p><span>s3span>p> 
  16.  
  17. 09<p><spanclassspanclass='red'>s4span>p> 
  18.  
  19. 10div> 
  20.  
  21. 11body> 

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

簡潔、高效的CSS寫法

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

◆不要在ID選擇器前使用標簽名

一般寫法:DIV#divBox

更好寫法:#divBox

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

◆不要再class選擇器前使用標簽名

一般寫法:span.red

更好寫法:.red

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

viewsourceprint?

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

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

◆盡量少使用層級關系

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

更好寫法:.red{..}

◆使用class代替層級關系

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

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

Firefox和google的2篇相關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
 

【編輯推薦】

  1. 解決CSS中float:right后右對齊換行問題
  2. CSS Sprites樣式生成工具用法詳解
  3. FireFox和IE中CSS兼容技巧匯總
  4. CSS代碼整理及優化七大原則
  5. 深入剖析Firefox下 margin-top失效原因與解決方案

 

 

責任編輯:佚名 來源: nowamagic.net
相關推薦

2010-08-26 09:58:01

CSS clear

2010-09-06 11:26:18

CSS偽類

2010-09-07 10:57:34

CSS偽類

2010-09-08 13:14:03

CSS濾鏡

2010-09-25 14:38:18

Java內存分配

2010-09-14 17:20:03

CSS DIV相對定位

2010-09-01 08:58:58

2010-08-25 11:05:03

CSSpaddingmargin

2010-08-23 09:01:45

MarginPadding

2010-08-19 12:55:55

CSSMarginPadding

2010-09-02 09:09:38

display:inlCSS

2009-11-17 14:13:34

PHP配置

2010-08-16 11:05:54

DIV+CSS

2015-09-29 08:57:46

javascript對象

2010-09-17 14:17:05

JVM內存設置

2010-09-07 11:05:34

CSS邊框

2015-09-29 09:27:04

JavaScript對象

2010-06-29 15:29:22

UML建模流程

2018-09-11 09:33:49

Redis高可用架構

2012-03-08 13:15:10

JavaStrutsOGNL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 青青激情网 | 亚洲美女网站 | 国产精品国产精品国产专区不蜜 | 欧美激情精品久久久久 | 日本精a在线观看 | jlzzjlzz欧美大全 | 久久久久久免费精品一区二区三区 | 亚洲一区二区在线免费观看 | 99精品一级欧美片免费播放 | 永久免费在线观看 | 中文字幕乱码一区二区三区 | 成人免费激情视频 | 中文在线一区二区 | 国产精品美女久久久久久免费 | cao在线 | 亚洲精品一区二三区不卡 | 婷婷五月色综合香五月 | 亚洲精品一区在线 | 99热热 | 亚洲精品乱码久久久久久按摩观 | 久久婷婷av | 亚洲午夜网 | 亚洲国产精品久久久久久 | 台湾a级理论片在线观看 | 毛片网站免费观看 | 成人免费网站 | 国产精品色av | 欧美日韩综合视频 | 久久日韩粉嫩一区二区三区 | 一区二区三区视频在线观看 | 精品久久久久久久久久久久 | 91国自产 | 91精品久久久久久综合五月天 | 看片91 | 久久亚洲国产精品日日av夜夜 | 久久精品亚洲一区二区三区浴池 | 国产成人精品一区二三区在线观看 | 国产一区二区三区四区三区四 | 亚州精品天堂中文字幕 | 色婷婷精品久久二区二区蜜臂av | 色狠狠桃花综合 |