CSS選擇器與優(yōu)先級(jí)淺析

CSS選擇器是用于定位文檔中的元素所在以便設(shè)定相應(yīng)的樣式蝗罗,常見的選擇器包括:基礎(chǔ)選擇器、組合選擇器蝌戒、屬性選擇器串塑、偽類選擇器和偽元素等。
而優(yōu)先級(jí)則是CSS樣式在瀏覽器中被解析的先后順序

1.CSS選擇器

  • 什么是選擇器
    CSS選擇器是用于定位文檔中的元素所在以便設(shè)定相應(yīng)的樣式的代碼
  • 選擇器的意義
    在對(duì)文檔設(shè)計(jì)樣式時(shí)進(jìn)行精準(zhǔn)地定位
  • 選擇器的分類
    選擇器的類型可大致劃分為:基礎(chǔ)選擇器北苟、組合選擇器桩匪、屬性選擇器、偽類選擇器和偽元素等
    • 基礎(chǔ)選擇器
選擇器 含義 實(shí)例
* 通用選擇器友鼻,匹配任何元素 *{font-size:16px;}
E 標(biāo)簽選擇器傻昙,匹配所有使用E標(biāo)簽的元素 p{font-family:arial;}
.error class選擇器,匹配所有class屬性中包含error的元素 .error{font-weight:bold;}
#correct id選擇器彩扔,匹配所有id屬性值為correct的元素 #correct{font-style:italic;}
  • 組合選擇器
選擇器 含義 實(shí)例
E,F 多元素選擇器妆档,同時(shí)匹配所有E元素或F元素 div,p{background-attachment:fixed;}
E F 后代元素選擇器,匹配所有屬于E元素的后代F元素 div a{background-color:blue;}
E > F 子元素選擇器虫碉,匹配所有E元素的子元素F div>p{background-image:url(xxx.gif)}
E+F 毗鄰元素選擇器贾惦,匹配所有緊隨E元素之后的同級(jí)元素F p+div{background-position:x% y%}
  • 屬性選擇器
選擇器 含義 實(shí)例
E[att] 匹配所有具有att屬性的E元素 p[style]{background-repeat:repeat-y;}
E[att=val] 匹配所有att屬性等于“val”的E元素 div[class="c1"]
E[att~=val] 匹配所有att屬性具有多個(gè)空格分隔的值、其中一個(gè)值等于“val”的E元素 div[class~=c2]
E[att|=val] 匹配所有att屬性具有多個(gè)連字號(hào)分隔(hyphen-separated)的值、其中一個(gè)值以“val”開頭的E元素 p[lang|=en]

【注】除了上表提到的屬性選擇器之外须板,還包括一些CSS3新添加的屬性選擇器碰镜,這些留待日后更新

  • 偽類選擇器
選擇器 含義 實(shí)例
E:first-child 匹配父元素E下的第一個(gè)子元素 div:first-child{text-align:center;}
E:link 匹配所有未被點(diǎn)擊的鏈接
E:visited 匹配所有已被點(diǎn)擊的鏈接
E:active 匹配鼠標(biāo)已經(jīng)按下、還沒有釋放的E元素
E:hover 匹配鼠標(biāo)懸停其上的E元素
E:focus 匹配獲得當(dāng)前焦點(diǎn)的E元素
E:lang(c) 匹配lang屬性等于c的E元素
  • 偽元素
選擇器 含義 實(shí)例
E:first-line 匹配E元素的第一行 p:first-line{color:red;}
E:first-letter 匹配E元素的第一個(gè)字母 .c1:first-letter{color:blue;}
E:before 在E元素之前插入生成的內(nèi)容 .ctn before{content:"";display:block;;height:40px;width:40px;}
E:after 在E元素之后插入生成的內(nèi)容 .ctn after{content:"";display:block;;height:40px;width:40px;}

2.CSS的優(yōu)先級(jí)

【注】
本篇幅的知識(shí)點(diǎn)是根據(jù)網(wǎng)站的資料整合而成习瑰,是國(guó)內(nèi)開發(fā)者關(guān)于CSS選擇器優(yōu)先級(jí)的一般看法绪颖,特點(diǎn)是計(jì)算簡(jiǎn)便,但存在一定的缺陷性甜奄。
這里柠横,非常感謝饑人谷的夏東旭童鞋在閱覽筆者的文章后,給予我關(guān)于CSS選擇器的優(yōu)先級(jí)的指正贺嫂,夏東旭童鞋的文章更加具有參考價(jià)值滓鸠,在此附上其文章地址
至于兩種計(jì)算方式的計(jì)算優(yōu)劣以及適用情況,由于筆者還算新手第喳,視野未開,容日后對(duì)本文做進(jìn)一步完善踱稍。

css優(yōu)先級(jí)曲饱,即是指CSS樣式在瀏覽器中被解析的先后順序

  • 選擇器優(yōu)先級(jí)的規(guī)定
    關(guān)于優(yōu)先級(jí)的規(guī)定,常用的方法是給不同的選擇器分配權(quán)值:
    • id選擇器優(yōu)先級(jí)很高珠月,權(quán)值為100
    • class扩淀、屬性和偽類選擇器的權(quán)值為10
    • 標(biāo)簽選擇器權(quán)值為1
      在比較樣式的優(yōu)先級(jí)時(shí),只需統(tǒng)計(jì)選擇符中的id啤挎、class和標(biāo)簽名的個(gè)數(shù)驻谆,然后把相應(yīng)的權(quán)值相加即可,最后根據(jù)結(jié)果排出優(yōu)先級(jí)
    • 權(quán)值較大的優(yōu)先級(jí)越高
    • 權(quán)值相同的庆聘,后定義的優(yōu)先級(jí)較高
    • 樣式值含有胜臊!important,優(yōu)先級(jí)最高

div .class1 #people的權(quán)值等于1+10+100=111
.class2 li #age的權(quán)值等于10+1+100=111
如果第二個(gè)選擇器后定義樣式伙判,則第二個(gè)的優(yōu)先級(jí)要高

  • 后代選擇器的定位原則
    在這里介紹一下對(duì)于后代選擇器象对,瀏覽器是如何查找元素的呢?
    瀏覽器CSS匹配不是從左到右進(jìn)行查找宴抚,而是從右到左進(jìn)行查找勒魔。
    比如DIV#divBox p span.red{color:red;},瀏覽器的查找順序如下:先查找html中所有class='red'的span元素菇曲,找到后冠绢,再查找其父輩元素中是否有p元素,再判斷p的父元素中是否有id為divBox的div元素常潮,如果都存在則匹配上弟胀。
    瀏覽器從右到左進(jìn)行查找的好處是為了盡早過(guò)濾掉一些無(wú)關(guān)的樣式規(guī)則和元素。

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末邮利,一起剝皮案震驚了整個(gè)濱河市弥雹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌延届,老刑警劉巖剪勿,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異方庭,居然都是意外死亡厕吉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門械念,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)头朱,“玉大人,你說(shuō)我怎么就攤上這事龄减∠钆ィ” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵希停,是天一觀的道長(zhǎng)烁巫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)宠能,這世上最難降的妖魔是什么亚隙? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮违崇,結(jié)果婚禮上阿弃,老公的妹妹穿的比我還像新娘。我一直安慰自己羞延,他們只是感情好渣淳,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肴楷,像睡著了一般水由。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赛蔫,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天砂客,我揣著相機(jī)與錄音,去河邊找鬼呵恢。 笑死鞠值,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的渗钉。 我是一名探鬼主播彤恶,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼钞钙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了声离?” 一聲冷哼從身側(cè)響起芒炼,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎术徊,沒想到半個(gè)月后本刽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赠涮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年子寓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笋除。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斜友,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出垃它,到底是詐尸還是另有隱情鲜屏,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布国拇,位于F島的核電站墙歪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏贝奇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一靠胜、第九天 我趴在偏房一處隱蔽的房頂上張望掉瞳。 院中可真熱鬧,春花似錦浪漠、人聲如沸陕习。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)该镣。三九已至,卻和暖如春响谓,著一層夾襖步出監(jiān)牢的瞬間损合,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工娘纷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫁审,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓赖晶,卻偏偏與公主長(zhǎng)得像律适,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容