重学前端学习笔记(二十二)--选择器的机制
筆記說明
重學(xué)前端是程劭非(winter)【前手機淘寶前端負責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,郵箱:kaimo313@foxmail.com。
一、引言
本文講一講選擇器的幾個機制:選擇器的組合、選擇器的優(yōu)先級和偽元素。
二、選擇器的組合
2.1、選擇器列表
選擇器列表:用逗號分隔的復(fù)雜選擇器序列;復(fù)雜選擇器則是用空格、大于號、波浪線等符號連接的復(fù)合選擇器;復(fù)合選擇器則是連寫的簡單選擇器組合。
2.2、優(yōu)先級
- 第一優(yōu)先級
- 無連接符號
- 第二優(yōu)先級
- 空格
- ~
- +
- >
- ||
- 第三優(yōu)先級
- ,
2.3、復(fù)雜選擇器的連接符號
- 空格:表示選中所有符合條件的后代節(jié)點。(后代)
- >:表示選中符合條件的子節(jié)點。(子代)
- ~:表示選中所有符合條件的后繼節(jié)點,后繼節(jié)點即跟當前節(jié)點具有同一個父元素,并出現(xiàn)在它之后的節(jié)點。(后繼)
- +:表示選中符合條件的直接后繼節(jié)點,直接后繼節(jié)點即 nextSlibling。(直接后繼)
- ||:表示選中對應(yīng)列中符合條件的單元格。(列選擇器)
三、選擇器的優(yōu)先級
CSS 標準用一個三元組 (a, b, c) 來構(gòu)成一個復(fù)雜選擇器的優(yōu)先級。CSS 建議用一個足夠大的進制,獲取“ a-b-c ”來表示選擇器優(yōu)先級。
// base 是一個"足夠大"的正整數(shù) specificity = base * base * a + base * b + c 復(fù)制代碼- id 選擇器的數(shù)目記為 a
- 偽類選擇器和 class 選擇器的數(shù)目記為 b
- 偽元素選擇器和標簽選擇器數(shù)目記為 c
- “*” 不影響優(yōu)先級。
注意:行內(nèi)屬性的優(yōu)先級永遠高于 CSS 規(guī)則,瀏覽器提供了一個口子就是添加!important。該優(yōu)先級會高于行內(nèi)屬性。同一優(yōu)先級的選擇器遵循后面的覆蓋前面的原則。
四、偽元素
偽元素本身不單單是一種選擇規(guī)則,它還是一種機制。
- ::first-line
- ::first-letter
- ::before
- ::after
4.1、::first-line 和 ::first-letter
代碼測試連接:codepen.io/pen/
1、::first-line
<p> kaimo is good boy.but sometime not. </p> 復(fù)制代碼p::first-line {text-transform: uppercase } 復(fù)制代碼注意:排版后顯示的第一行字母變?yōu)榇髮憽8?HTML 代碼中的換行無關(guān)。
2、::first-letter
p::first-letter {text-transform: uppercase;font-size:2em;float:left; } 復(fù)制代碼3、::first-line必須出現(xiàn)在最內(nèi)層的塊級元素內(nèi)。
<div><p id="a">kaimo is good boy.</p><p>but sometime not.</p> </div> 復(fù)制代碼div>p#a {color: green; } div::first-line {color: hotpink; } 復(fù)制代碼如果將p標簽替換成span標簽
<div><span id="a">kaimo is good boy.</span><span>but sometime not.</span> </div> 復(fù)制代碼div>span#a {color: green; } div::first-line {color: hotpink; } 復(fù)制代碼如果你理解了出現(xiàn)三種顏色的原因,那就證明你清楚明白了。
4、::first-letter 出現(xiàn)在所有標簽之內(nèi)
<div><span id="a">kaimo is good boy.</span><span>but sometime not.</span> </div> 復(fù)制代碼div>span#a {color: green; } div::first-letter {color: hotpink; } 復(fù)制代碼5、相關(guān)屬性
4.2、::before 和 ::after
::before 表示在元素內(nèi)容之前插入一個虛擬的元素,::after 則表示在元素內(nèi)容之后插入。
兩個偽元素必須指定 content 屬性才會生效。
個人總結(jié)
另外補充一下:可以查看MDN 偽類(pseudo-class)developer.mozilla.org/zh-CN/docs/…_(:3」∠)_。。。
轉(zhuǎn)載于:https://juejin.im/post/5ce3fc91f265da1bd522a3a3
總結(jié)
以上是生活随笔為你收集整理的重学前端学习笔记(二十二)--选择器的机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到好几家结婚的
- 下一篇: 使用Chrome浏览器自动下载文件并保存