摘要:選擇器優(yōu)先級(jí)與效率優(yōu)化本文收集網(wǎng)上各處關(guān)于選擇器的文章總結(jié),并自己歸納一篇。選擇器類選擇器標(biāo)簽選擇器相鄰選擇器子選擇器后代選擇器通配符選擇器屬性選擇器偽類選擇器優(yōu)先級(jí)高的不一定效率高舉個(gè)例子與前者效率高于后者,而后者優(yōu)先級(jí)高于前者。
CSS選擇器優(yōu)先級(jí)與效率優(yōu)化
Date: 7th of Aug, 2015
Author: HaoyCn
本文收集網(wǎng)上各處關(guān)于CSS選擇器的文章總結(jié),并自己歸納一篇。
各類選擇器的優(yōu)先級(jí)important聲明 1,0,0,0
ID選擇器 0,1,0,0
類選擇器 0,0,1,0
偽類選擇器 0,0,1,0
屬性選擇器 0,0,1,0
標(biāo)簽選擇器 0,0,0,1
偽元素選擇器 0,0,0,1
通配符選擇器 0,0,0,0
在上面的選擇器中,此外,經(jīng)測(cè)試
屬性選擇器 = 偽類選擇器(應(yīng)用最后一個(gè))
:last-child{color:red;} [desc]{color:green;}
偽類選擇器 > 相鄰選擇器
:last-child{color:green;} p ~ p{color:blue;}
相鄰選擇器 = 子選擇器 = 后代選擇器(應(yīng)用最后一個(gè))
p~p{color:red;} body p{color:blue;} body > p{color:green;}
后代選擇器 > 標(biāo)簽選擇器
p ~ p{color:blue;} p{color:green;}樣式位置的影響
同 同級(jí),應(yīng)用取決于標(biāo)簽和 標(biāo)簽的先后順序
元素style=""屬性的優(yōu)先級(jí)高于以上兩種樣式
!important 優(yōu)先級(jí)高于以上兩種樣式
備注
!important 在IE6中的BUG:在同一組CSS屬性中, !important不起作用。如:
#selector{color:blue !important;color:green;}選擇器效率
讀取選擇器的原則是從右到左。因此,我們書寫的右邊的最后一個(gè)選擇器,被稱作關(guān)鍵選擇器,對(duì)于效率有決定性影響。
以下效率排行由 @Steve Souders 提供。
ID選擇器
類選擇器
標(biāo)簽選擇器
相鄰選擇器
子選擇器
后代選擇器
通配符選擇器
屬性選擇器
偽類選擇器
優(yōu)先級(jí)高的不一定效率高
舉個(gè)例子:#id .class 與 div#id p.class
前者效率高于后者,而后者優(yōu)先級(jí)高于前者。我們需要在效率與優(yōu)先級(jí)之間平衡取舍。
優(yōu)化建議以下網(wǎng)址提供了諸多建議:
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficie...
扼要摘其精要總結(jié)如下:
避免使用通配符
不使用標(biāo)簽名或類名修飾ID規(guī)則:如果規(guī)則使用ID選擇器作為關(guān)鍵選擇器,不要給規(guī)則添加標(biāo)簽名。因?yàn)镮D本身就是唯一的,添加標(biāo)簽名會(huì)不必要地降低匹配效率。
不使用標(biāo)簽名修飾類:相較于標(biāo)簽,類更具獨(dú)特性。
盡量選擇最具體的方式:造成低效的最簡(jiǎn)單粗暴的原因就是在標(biāo)簽上使用太多規(guī)則。給元素添加類可以更快細(xì)分到類方式,可以減少規(guī)則去匹配標(biāo)簽的時(shí)間。
關(guān)于后代選擇器和子選擇器:避免使用后代選擇器,非要用的話建議用子選擇器代替,但子選擇器也要慎用,標(biāo)簽規(guī)則永遠(yuǎn)不要包含子選擇器。
利用可繼承性:沒必要在一般內(nèi)容上聲明樣式。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/111096.html
摘要:每個(gè)標(biāo)簽可有一個(gè)獨(dú)立的號(hào)。該標(biāo)簽是一個(gè)內(nèi)聯(lián)元素,與塊級(jí)元素相反,內(nèi)聯(lián)元素不會(huì)自動(dòng)在前后自動(dòng)放置換行符,因此內(nèi)聯(lián)元素會(huì)默認(rèn)在同一行顯示。前端語(yǔ)言基礎(chǔ):HTML5 & CSS (一) HTML5:超文本標(biāo)記語(yǔ)言 (1) 基本概念是由一系列成對(duì)出現(xiàn)的元素標(biāo)簽(標(biāo)記)嵌套組合而成 ( XML也是標(biāo)簽構(gòu)成的 )這些標(biāo)簽以<標(biāo)簽名稱>的形式出現(xiàn),用于標(biāo)記文本內(nèi)容的含義瀏覽器通過元素標(biāo)...
摘要:不要在編寫規(guī)則時(shí)用標(biāo)簽名或類名不要在編寫規(guī)則時(shí)用標(biāo)簽名把多層標(biāo)簽選擇規(guī)則用規(guī)則替換,減少查找避免使用子選擇器后代選擇器在中是最昂貴的選擇器。如果你關(guān)心頁(yè)面性能的話,他們真不該被使用擴(kuò)展閱讀前端面試題選擇器前端面試題優(yōu)先級(jí) 一、CSS選擇符 CSS選擇符由一些初始化參數(shù)組成,這些參數(shù)指明了要應(yīng)用這個(gè)CSS規(guī)則的頁(yè)面元素。 作為一個(gè)網(wǎng)站的前端開發(fā)工程師,應(yīng)該避免編寫一些常見的開銷很大的CS...
摘要:不要在編寫規(guī)則時(shí)用標(biāo)簽名或類名不要在編寫規(guī)則時(shí)用標(biāo)簽名把多層標(biāo)簽選擇規(guī)則用規(guī)則替換,減少查找避免使用子選擇器后代選擇器在中是最昂貴的選擇器。如果你關(guān)心頁(yè)面性能的話,他們真不該被使用擴(kuò)展閱讀前端面試題選擇器前端面試題優(yōu)先級(jí) 一、CSS選擇符 CSS選擇符由一些初始化參數(shù)組成,這些參數(shù)指明了要應(yīng)用這個(gè)CSS規(guī)則的頁(yè)面元素。 作為一個(gè)網(wǎng)站的前端開發(fā)工程師,應(yīng)該避免編寫一些常見的開銷很大的CS...
摘要:優(yōu)先級(jí)相同,與元素近的選擇器生效。使用建議建議說明避免將通用選擇器作為通用選擇器。避免選擇器用標(biāo)簽。避免使用子選擇器。后代選擇器是開銷最最最最大的。 看了一下最近寫的css代碼,發(fā)現(xiàn)基本只用到了id選擇器(js里)、后代選擇器和類選擇器(因?yàn)槁牬笈M扑]使用類選擇器,然后就開始大篇幅使用。。。)。所以想深入學(xué)習(xí)一下css選擇器和css的效率優(yōu)化,先記錄所學(xué)的一部分,以備后續(xù)補(bǔ)充。 選擇器...
摘要:本節(jié)內(nèi)容會(huì)跟著上一節(jié)的內(nèi)容繼續(xù)完善,首先會(huì)補(bǔ)充選擇器的瀏覽器支持情況主要是說,比如我們最常用的群組選擇器在時(shí)才被支持,并且還支持了很多我們沒有想到的選擇器,如子元素選擇器,屬性選擇器,了解后你會(huì)發(fā)現(xiàn)還是挺了不起的。 前言 上一篇系列文章整理了CSS選擇器的基礎(chǔ)使用方法,因?yàn)閮?nèi)容較多且細(xì)致,寫了很多DEMO,目前將它整理成適合移動(dòng)端瀏覽器的CSS選擇器的參考手冊(cè),方便學(xué)習(xí)CSS的人參考使...
閱讀 1712·2021-09-26 09:55
閱讀 5621·2021-09-22 15:40
閱讀 2062·2019-08-30 15:53
閱讀 1534·2019-08-30 11:15
閱讀 1754·2019-08-29 15:41
閱讀 1911·2019-08-28 18:13
閱讀 3195·2019-08-26 12:00
閱讀 1709·2019-08-26 10:30