屬性選擇器

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

* 此特性的某些部分可能存在不同級別的支援。

CSS 屬性選擇器根據元素是否明確設定了給定屬性來匹配元素,並提供定義屬性值或子字串值匹配的選項。

語法

css
/* <a> elements with a title attribute */
a[title] {
  color: purple;
}

/* <a> elements with an href matching "https://example.org" */
a[href="https://example.org"]
{
  color: green;
}

/* <a> elements with an href containing "example" */
a[href*="example"] {
  font-size: 2em;
}

/* <a> elements with an href ending ".org", case-insensitive */
a[href$=".org" i] {
  font-style: italic;
}

/* <a> elements whose class attribute contains the word "logo" */
a[class~="logo"] {
  padding: 2px;
}
[attr]

表示具有屬性名稱為 attr 的元素。

[attr=value]

表示具有屬性名稱為 attr 且其值恰好為 value 的元素。

[attr~=value]

表示具有屬性名稱為 attr 且其值是空格分隔的單詞列表,其中之一恰好為 value 的元素。

[attr|=value]

表示具有屬性名稱為 attr 且其值恰好為 value 或以 value 開頭並緊跟連字元 - (U+002D) 的元素。它通常用於語言子程式碼匹配。

[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 範圍內的字元)。

<attr>

一個 <ident>,即不帶引號的屬性名稱。這可以是任何有效的語言特定屬性(SVG、HTML、XML 等),一個 data-* 屬性,或作者建立的屬性。

<value>

一個 <ident><string>,表示屬性值。如果值包含空格或特殊字元,則必須帶引號。

si

區分大小寫或不區分大小寫的標誌。如果包含在閉合括號(])之前,則無論標記語言如何,都會使值區分大小寫或不區分大小寫。

描述

屬性名稱和值的區分大小寫取決於文件語言。在 HTML 中,屬性名稱不區分大小寫,規範定義的列舉值也是如此。不區分大小寫的 HTML 屬性值列在 HTML 規範中。對於這些屬性,選擇器中的屬性值不區分大小寫,無論該值是否無效或設定該屬性的元素上的屬性是否無效。

如果屬性值區分大小寫,例如 classiddata-* 屬性,則屬性選擇器值匹配區分大小寫。HTML 規範之外定義的屬性,如 rolearia-* 屬性,也區分大小寫。區分大小寫的屬性選擇器可以透過包含不區分大小寫修飾符(i)來使其不區分大小寫。

示例

CSS

css

HTML

html

結果

語言

CSS

css
/* All divs with a `lang` attribute are bold. */
div[lang] {
  font-weight: bold;
}

/* All divs without a `lang` attribute are italicized. */
div:not([lang]) {
  font-style: italic;
}

/* All divs in US English are blue. */
div[lang~="en-us"] {
  color: blue;
}

/* All divs in Portuguese are green. */
div[lang="pt"] {
  color: green;
}

/* All divs in Chinese are red, whether
   simplified (zh-Hans-CN) or traditional (zh-Hant-TW). */
div[lang|="zh"] {
  color: red;
}

/* All divs with a Traditional Chinese
   `data-lang` are purple. */
/* Note: You could also use hyphenated attributes
   without double quotes */
div[data-lang="zh-Hant-TW"] {
  color: purple;
}

HTML

html
<div lang="en-us en-gb en-au en-nz">Hello World!</div>
<div lang="pt">Olá Mundo!</div>
<div lang="zh-Hans-CN">世界您好!</div>
<div lang="zh-Hant-TW">世界您好!</div>
<div data-lang="zh-Hant-TW">世界您好!</div>

結果

HTML 有序列表

HTML 規範要求 type 屬性不區分大小寫匹配,因為它主要用於 <input> 元素。請注意,如果使用者代理不支援修飾符,則選擇器將不匹配。

CSS

css
/* Case-sensitivity depends on document language */
ol[type="a"]:first-child {
  list-style-type: lower-alpha;
  background: red;
}

ol[type="i" s] {
  list-style-type: lower-alpha;
  background: lime;
}

ol[type="I" s] {
  list-style-type: upper-alpha;
  background: grey;
}

ol[type="a" i] {
  list-style-type: upper-alpha;
  background: green;
}

HTML

html
<ol type="A">
  <li>
    Red background for case-insensitive matching (default for the type selector)
  </li>
</ol>
<ol type="i">
  <li>Lime background if `s` modifier is supported (case-sensitive match)</li>
</ol>
<ol type="I">
  <li>Grey background if `s` modifier is supported (case-sensitive match)</li>
</ol>
<ol type="A">
  <li>
    Green background if `i` modifier is supported (case-insensitive match)
  </li>
</ol>

結果

規範

規範
選擇器 Level 4
# attribute-selectors

瀏覽器相容性

另見