搜尋

屬性選擇器

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 選擇器

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

數值與單位

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

規則與定義

變數 ( Variables ) 媒體查詢 ( @media ) 容器查詢 ( @container ) 自訂屬性值 ( @property ) 匯入樣式 ( @import ) 分層優先順序 ( @layer )

函式類型

數學計算 文字與清單計數 形狀與線段 路徑 ( path ) 生成內容與引號

顏色與濾鏡

顏色單位 色彩模型 漸層色 影像濾鏡 ( filter ) 背景濾鏡 ( backdrop-filter ) 混合模式 ( mix-blend-mode )

文字與段落

設定字型 ( font-family ) 使用外部字型 定義字型 ( @font-face ) 文字尺寸 文字樣式 ( 常用 ) 文字樣式 ( 其他實用 ) 文字樣式 ( 特殊用途 ) 文字換行 文字空白與 Tab 大小 文字行高與縮排 文字水平與垂直對齊 文字書寫方向 文字自動分欄

元素容器

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

背景與陰影

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

清單與表格

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

基本排版與定位

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

Flexbox 彈性排版

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

Grid 網格排版

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

轉場與動畫

轉場 ( transition ) 轉場觸發事件 動畫 ( animation ) 自訂動畫路徑 ( offset ) 動畫觸發事件 多重動畫的權重與順序

變形、裁切與遮罩

裁切路徑 ( clip-path ) 影像遮罩 ( mask ) 物件填滿方式與定位 轉換函式 ( transform ) 平移、旋轉與縮放 3D 轉換與透視 3D 正多面體

視窗與使用者行為

捲軸樣式 ( scrollbar ) 滑鼠游標圖示 ( cursor ) 滑鼠事件 ( pointer-events ) 使用者選取 ( user-select ) 捲動行為 ( scroll、overscroll )

範例效果

CSS 圓餅圖 CSS 跑馬燈 Google 載入動畫 漸層色的轉場與動畫 電子時鐘數字 不規則形狀動畫