CSS選擇器及其優先順序

2021-10-11 21:19:56 字數 3533 閱讀 7034

標籤選擇器 (tagname)

body

類選擇器 (.)

.class

id選擇器 (#)

#id

通配選擇器 (*)

在css3中,星號(*)可以和命名空間組合使用:

ns| * - 會匹配ns命名空間下的所有元素

* | * - 會匹配所有命名空間下的所有元素

| * - 會匹配所有沒有命名空間的元素

屬性選擇器 ()

屬性選擇器通過已經存在的屬性名或屬性值匹配元素

語法:[attr]表示帶有以 attr 命名的屬性的元素。

[attr=value]

表示帶有以 attr 命名的屬性,且屬性值為 value 的元素。

[attr~=value]

表示帶有以 attr 命名的屬性的元素,並且該屬性是乙個以空格作為分隔的值列表,其中至少有乙個值為 value。

[attr|=value]

表示帶有以 attr 命名的屬性的元素,屬性值為「value」或是以「value-」為字首("-"為連字元,unicode 編碼為 u+002d)開頭。典型的應用場景是用來匹配語言簡寫**(如 zh-cn,zh-tw 可以用 zh 作為 value)。

[attr^=value]

表示帶有以 attr 命名的屬性,且屬性值是以 value 開頭的元素。

[attr$=value]

表示帶有以 attr 命名的屬性,且屬性值是以 value 結尾的元素。

[attr=value]*

表示帶有以 attr 命名的屬性,且屬性值至少包含乙個 value 值的元素。

[attr operator value i]

在屬性選擇器的右方括號前新增乙個用空格隔開的字母 i(或 i),可以在匹配屬性值時忽略大小寫(支援 ascii 字元範圍之內的字母)。

[attr operator value s]

在屬性選擇器的右方括號前新增乙個用空格隔開的字母 s(或 s),可以在匹配屬性值時區分大小寫(支援 ascii 字元範圍之內的字母)。

/* 存在title屬性的元素 */

a[title]

/* 存在href屬性並且屬性值匹配""的元素 */

a[href=""]

/* 存在href屬性並且屬性值結尾是".org"的元素 */

a[href$=".org"]

/* 存在class屬性並且屬性值包含以空格分隔的"logo"的元素 */

a[class~="logo"]

/* 以 "#" 開頭的頁面本地鏈結 */

a[href^="#"]

/* 包含 "example" 的鏈結 */

a[href*="example"]

/* 包含 "insensitive" 的鏈結,不區分大小寫 */

a[href*="insensitive" i]

/* 包含 "case" 的鏈結,區分大小寫 */

a[href*="case" s]

span, 

div

選擇器列表無效化:在選擇器列表中,如果有乙個選擇器不被支援,那麼整條規則就會失效。這種情況下可以使用:is(),但是會影響整個選擇器列表的優先順序。

後代元素選擇器 ( a b)

/* p可能是div的子孫重孫等等 */

div p

直接子元素選擇器 (a > b)

/* p肯定是div的兒子 */

div > p

兄弟元素選擇器 (a ~ b)

/* img後面所有同級的p將被選中 */

img ~ p

鄰近兄弟元素選擇器 (a + b)

/* img後面緊跟著的p將被選中 */

img + p

偽類 ( : )

為選擇的元素的 特殊狀態 應用樣式

/* 所有使用者指標懸停的按鈕 */

button:hover

偽元素 ( :: )

可被用於為乙個元素的 特定部分 應用樣式

/* 每乙個 元素的第一行。 */

p::first-line

乙個選擇器的優先順序由四位數組成

千位內聯樣式,即宣告在style的屬性,1000

百位id選擇器,0100

十位類選擇器、屬性選擇器、偽類,0010

個位元素、偽元素選擇器,0001

在計算時不進製,即使一百個十位也比不了乙個百位,級別碾壓。

通用選擇器 (*),組合符 (+, >, ~, 』 '),和否定偽類 (:not) 不會影響優先順序。

看下圖:

h1 + p::first-letter的選擇器權重:

選擇器選擇器型別

權重h1

標籤選擇器

0001

p標籤選擇器

0001

::first-letter

偽元素選擇器

0001

合計0003

li > a[href*="en-us"] > .inline-warning的選擇器權重:

選擇器選擇器型別

權重li

標籤選擇器

0001

a標籤選擇器

0001

[href*=「en-us」]

屬性選擇器

0010

.inline-warning

類選擇器

0010

合計0022

下面這個例子中的111、222分明是什麼顏色,你答對了嗎?

CSS選擇器及其優先順序排序

css選擇器如下 css的選擇器其實大類的話可以分為三類,即id選擇器 class選擇器 標籤選擇器。用法如下 其中,他們之間又可以以不同的方式進行組合,如下 完整css選擇器參考手冊 下面列表中,選擇器型別的優先順序是遞增的 型別選擇器 type selectors 例如,h1 和 偽元素 pse...

選擇器優先順序 CSS選擇器優先順序總結

css選擇器優先順序這個問題,相信有點經驗前端都會認為非常簡單,但是我們今天還是來總結一下吧。相信大家應該很少直接在html頁面寫樣式吧,一般都是用link標籤匯入css樣式表。使用者自定義樣式表就是我們用link標籤引入的css樣式表,為了保持不同瀏覽器下樣式相同,所以我們的自定義樣式表一般都會覆...

CSS 選擇器優先順序

css優先順序包含四個級別 文內選擇器,id選擇器,class選擇器,元素選擇器 以及各級別出現的次數。根據這四個級別出現的次數計算得到css的優先順序。css優先順序的計算規則如下 頁面中直接設定style,加1,0,0,0 每個id選擇器 如 id 加0,1,0,0 每個class選擇器 如 c...