搜尋

屬性選擇器

CSS 屬性選擇器可以根據 HTML 元素的屬性名稱與屬性值,選取特定的元素,然而隨著瀏覽器與 CSS 的進步,甚至可以根據屬性值的字首、字尾或片段來選取元素,這篇教學會介紹屬性選擇器的各種使用方法。

延伸閱讀:HTML 元素屬性

快速導覽:

CSS 教學 - 屬性選擇器

屬性名稱

單純根據「屬性名稱」而形成的屬性選擇器,也常稱為「簡單屬性選擇器」,撰寫原則和寫法如下:

  • 使用「兩個中括號」包覆屬性名稱。
  • 不考慮屬性值,只判斷屬性名稱。
  • 屬性名稱「不區分大小寫」。
  • 屬性名稱「左右不需要引號」。
h1[name] {color: red;}  /* 具有 name 屬性的 h1 元素會是紅色文字 */
a[href] {color: blue;}  /* 具有 href 屬性的 a 元素會是藍色文字 */
a[HREF] {color: blue}   /* 屬性名稱不區分大小寫,效果等同上方 a[href] */

如果元素具有「多個屬性」,可以使用「串連」的方式連接多個屬性名稱。

h1[name][title] {color: red;}  
/* 同時具有 name、title 屬性的 h1 元素會是紅色文字 */

a[href][target][title] {color: blue;}
/* 同時具有 href、target、title 屬性的 a 元素會是藍色文字 */

精確屬性值

由於不同的元素時常會具有同樣的屬性名稱,因此可進一步運用「精確的屬性值」作為選取條件,撰寫原則和寫法如下:

  • 使用「雙引號或單引號」包覆屬性值 ( 也可以不使用,但部分特殊符號需要跳脫字元且容易出錯,建議一率使用 )。
  • 屬性值「區分大小寫」。
  • 屬性值「包含空白」。
<!-- HTML 程式碼 -->
<h1 name="oxxo">oxxo.studio</h1>
<h2 note="hello world!!">hello</h2>
<a href="index.html">超連結 1</a>
<br>
<a href="INDEX.html">超連結 2</a>

<!-- CSS 程式碼 -->
<style>
  h1[name="oxxo"] {color: red;}           /* 具有 name 屬性為 oxxo 的 h1 元素會是紅色文字 */
  h2[note="hello world!!"] {color: gray;} /* 具有 note 屬性為 hello world!! 的 h2 元素會是灰色文字 */
  a[href="index.html"] {color: blue;}     /* 具有 href 屬性為 index.html 的 a 元素會是藍色文字 */
  a[href="INDEX.html"] {color: blue}      /* 具有 href 屬性為 INDEX.html 的 a 元素會是綠色文字 */
</style>

CSS 教學 - 屬性選擇器 - 精確屬性值

由於屬性值會比對「空白字元」,不同數量的空白字元就會對應不同的選取器,舉例來說「hello world」和「hello world」就是不同的兩個屬性值,如果屬性值多了幾個空白,就不會套用選擇器的樣式。

<!-- HTML 程式碼 -->
<h2 note="hello world!!">hello 1</h2>
<h2 note="hello    world!!">hello 2</h2>

<!-- CSS 程式碼 -->
<style>
  h2[note="hello world!!"] {color: red;} /* 屬性值 hello world!! 的 h2 元素是紅色文字 */
</style>

CSS 教學 - 屬性選擇器 - 精確屬性值會比對「空白字元」

部分屬性值

部分屬性值會透過簡單的「字串比對」方式,判斷下列幾種部分屬性值:

寫法 說明
[name~="oxxo"] 空白分隔並具有屬性值
[name*="oxxo"] 包含屬性值
[name^="oxxo"] 開頭等於屬性值
[name$="oxxo"] 結尾等於屬性值
[name|="oxxo"] 等於屬性值、或開頭為屬性值加破折號「-」

空白分隔並具有屬性值

使用~符號,寫法為[name~="oxxo"],使用後會判斷是否具有指定屬性名稱,以及屬性值是否具有「空白分隔」以及指定的數值,下方的範例執行後,根據屬性選擇器的規則,第一行和第四行的文字會變成紅色。

<!-- HTML 程式碼 -->
<h2 name="apple oxxo banana">apple oxxo banana</h2>
<h2 name="apple-oxxo-banana">apple-oxxo-banana</h2>
<h2 name="appleoxxobanana">appleoxxobanana</h2>
<h2 name="apple banana oxxo">apple banana oxxo</h2>

<!-- CSS 程式碼 -->
<style>
  [name~="oxxo"] {color: red;}
</style>

CSS 教學 - 屬性選擇器 - 空白分隔並具有屬性值

包含屬性值

使用*符號,寫法為[name*="oxxo"],使用後會判斷是否具有指定屬性名稱,以及屬性值是否「包含」指定的數值,下方的範例執行後,根據屬性選擇器的規則,因為全部屬性值都有 oxxo,所以都會變成紅色。

<!-- HTML 程式碼 -->
<h2 name="apple oxxo banana">apple oxxo banana</h2>
<h2 name="apple-oxxo-banana">apple-oxxo-banana</h2>
<h2 name="oxxoappleoxxobanana">appleoxxobanana</h2>
<h2 name="apple banana oxxo">apple banana oxxo</h2>

<!-- CSS 程式碼 -->
<style>
  [name*="oxxo"] {color: red;}
</style>

CSS 教學 - 屬性選擇器 - 包含屬性值

開頭等於屬性值

使用^符號,寫法為[name^="oxxo"],使用後會判斷是否具有指定屬性名稱,以及屬性值的「開頭」是否「等於」指定的數值,下方的範例執行後,根據屬性選擇器的規則,第二和第三行會變成紅色。

<!-- HTML 程式碼 -->
<h2 name="apple oxxo banana">apple oxxo banana</h2>
<h2 name="oxxo-apple-banana">oxxo-apple-banana</h2>
<h2 name="oxxoapplebanana">oxxoappleoxxobanana</h2>
<h2 name="apple banana oxxo">apple banana oxxo</h2>

<!-- CSS 程式碼 -->
<style>
  [name^="oxxo"] {color: red;}
</style>

CSS 教學 - 屬性選擇器 - 開頭等於屬性值

結尾等於屬性值

使用$符號,寫法為[name$="oxxo"],使用後會判斷是否具有指定屬性名稱,以及屬性值的「結尾」是否「等於」指定的數值,下方的範例執行後,根據屬性選擇器的規則,只有第四行會變成紅色。

<!-- HTML 程式碼 -->
<h2 name="apple oxxo banana">apple oxxo banana</h2>
<h2 name="oxxo-apple-banana">oxxo-apple-banana</h2>
<h2 name="oxxoapplebanana">oxxoappleoxxobanana</h2>
<h2 name="apple banana oxxo">apple banana oxxo</h2>

<!-- CSS 程式碼 -->
<style>
  [name^="oxxo"] {color: red;}
</style>

CSS 教學 - 屬性選擇器 - 結尾等於屬性值

等於屬性值、或開頭為屬性值加破折號

使用|符號,寫法為[name|="oxxo"],使用後會判斷是否具有指定屬性名稱,以及屬性值*完全等於指定數值,或開頭使用指定數值加上「破折號」,下方的範例執行後,根據屬性選擇器的規則,第二和第五行會變成紅色。

<!-- HTML 程式碼 -->
<h2 name="apple oxxo banana">apple oxxo banana</h2>
<h2 name="oxxo-apple-banana">oxxo-apple-banana</h2>
<h2 name="oxxoapplebanana">oxxoappleoxxobanana</h2>
<h2 name="apple banana oxxo">apple banana oxxo</h2>
<h2 name="oxxo">oxxo</h2>

<!-- CSS 程式碼 -->
<style>
  [name|="oxxo"] {color: red;}
</style>

CSS 教學 - 屬性選擇器 - 等於屬性值、或開頭為屬性值加破折號

不區分大小寫識別子

屬性選擇器有個特別的功能,稱作「不區分大小寫識別子」,只需要在屬性值後方加上「i」即可,寫法為「[name="oxxo" i],使用後就會在比對屬性值時,忽略英文大小寫,下方的範例執行後,不論屬性值英文大小寫為何,都會套用紅色文字的樣式。

<!-- HTML 程式碼 -->
<h2 name="abcdefg">abcdefg</h2>
<h2 name="ABCDEFG">ABCDEFG</h2>
<h2 name="ABCdefg">ABCdefg</h2>

<!-- CSS 程式碼 -->
<style>
  [name="abcdefg" i] {color: red;}
</style>

CSS 教學 - 屬性選擇器 - 不區分大小寫識別子

將 id 或 class 作為屬性選擇器的注意事項

雖然 id 和 class 也屬於屬性的一種,但 id 和 class 通常都是使用自己的選取器,不會特別去使用屬性選取器,但如果真的有需求,則需要注意下列幾個重點:

小結

雖然屬性選擇器不如 元素、id 和 class 選擇器常用,但相對可以操作的靈活性卻非常大,透過屬性值的簡單字串比對,就能在不需要太多額外選擇器的輔助下,輕鬆選取到特定的物件,此外,許多 JavaScript 操控 HTML 元素的語法,也時常和屬性選擇器搭配使用,是相當方便實用的選擇器喔。

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

CSS 教學

基本介紹

認識 CSS 開始使用 CSS CSS 語法規則 CSS 命名原則

CSS 選擇器

認識 CSS 選擇器 優先順序 ( 權重 ) 樣式繼承與聯集 元素選擇器 ID 和 Class 選擇器 屬性選擇器 文件結構選擇器 虛擬類別選擇器 ( 結構 ) 虛擬類別選擇器 ( 類型 ) 虛擬類別選擇器 ( 輸入 ) 虛擬類別選擇器 ( 行為 ) 虛擬類別選擇器 ( 超連結 ) 虛擬類別選擇器 ( 邏輯 ) 虛擬類別選擇器 ( 其他 ) 虛擬元素選擇器 群組與組合選擇器

數值與單位

關鍵字與文字數值 長度與角度單位 顏色單位 位置名稱與時間單位

變數與內容函式

變數 數學計算 文字與清單計數 生成內容與引號

顏色與濾鏡

色彩模型 漸層色 影像濾鏡

文字樣式

使用通用字型 使用外部字型 @font-face 定義字型 文字尺寸 常用文字樣式 文字換行 文字空白與 Tab 大小 文字行高與縮排 文字水平與垂直對齊 文字書寫方向 特殊文字樣式

元素容器

容器顯示類型 ( display ) 元素 display 對照表 盒子模型 ( Box Model ) 寬度與高度 內邊距 ( padding ) 外邊界 ( margin ) 邊框 ( border ) 邊框圓角 影像邊框 輪廓 ( outline ) 可見性與透明度 內容溢出與裁切

背景與陰影

背景顏色 背景圖 ( 定位、尺寸 ) 背景圖 ( 固定、重複 ) 背景圖 ( 多重背景、混合 ) 背景縮寫 ( background ) 容器陰影 ( box-shadow )

清單與表格

清單樣式 清單計數器 定義計數規則 表格基本樣式 表格邊框樣式 表格內容寬度與對齊

基本排版與定位

元素排版方式 浮動 ( float ) 浮動形狀 定位 ( position )

Flexbox 彈性排版

Flexbox 彈性盒子 Flexbox 對齊方式 Flexbox 彈性伸縮

Grid 網格排版

Grid 網格容器與格線 Grid 網格空間與命名 Grid 網格流向與間距 Grid 排列網格項目 Grid 項目對齊與順序

轉場與動畫

轉場 ( transition ) 轉場觸發事件 動畫 ( animation ) 動畫觸發事件 多重動畫的權重與順序

變形、裁切與遮罩

裁切路徑 ( clip-path ) 影像遮罩 ( mask )