CSSセレクタ contains

CSS 属性セレクタ

この文章では、HTML 要素の属性に基づいて要素を選択するために使用される CSS 属性セレクタについて解説します。属性の存在、値の完全一致、部分一致など、さまざまな条件で要素を選択する方法を紹介します。


属性存在セレクタ

[attr] セレクタは、指定された属性を持つ要素を選択します。属性値は問いません。


<a href="https://www.example.com">リンク</a>
<span data-info="サンプル">データ</span>

a[href] は、href 属性を持つすべての <a> 要素を選択します。

[data-info] は、data-info 属性を持つすべての要素を選択します。


属性値一致セレクタ

[attr=value] セレクタは、指定された属性を持ち、その値が完全に一致する要素を選択します。


<input type="text" name="username">
<input type="password" name="password">

input[type="password"] は、type 属性が "password" である <input> 要素を選択します。


属性値部分一致セレクタ

[attr~=value] セレクタは、指定された属性を持ち、その値に指定された単語(スペース区切り)を含む要素を選択します。


<div class="box red">赤いボックス</div>
<div class="box blue large">青い大きなボックス</div>

div[class~=red] は、class 属性に "red" という単語を含む <div> 要素を選択します。


属性値開始文字列一致セレクタ

[attr|=value] セレクタは、指定された属性を持ち、その値が指定された文字列で始まるか、指定された文字列の後にハイフン (-) が続く要素を選択します。


<p lang="en">英語</p>
<p lang="en-US">アメリカ英語</p>

p[lang|=en] は、lang 属性が "en" で始まるか "en-" で始まる <p> 要素を選択します。


属性値開始文字列包含セレクタ

[attr^=value] セレクタは、指定された属性を持ち、その値が指定された文字列で始まる要素を選択します。


<img src="image/cat.jpg" alt="猫の画像">
<img src="https://example.com/dog.webp" alt="犬の画像">

img[src^="https"] は、src 属性が "https" で始まる <img> 要素を選択します。


属性値末尾文字列包含セレクタ

[attr$=value] セレクタは、指定された属性を持ち、その値が指定された文字列で終わる要素を選択します。


<script src="script.js"></script>
<link rel="stylesheet" href="style.css">

[href$=".css"] は、href 属性が ".css" で終わる要素を選択します。


属性値部分文字列包含セレクタ

[attr*=value] セレクタは、指定された属性を持ち、その値に指定された文字列を含む要素を選択します。


<a href="https://ja.wikipedia.org/wiki/猫">猫 - Wikipedia</a>
<a href="https://www.google.com/search?q=犬">犬の検索結果 - Google 検索</a>

a[href*="wikipedia"] は、href 属性に "wikipedia" を含む <a> 要素を選択します。


大文字と小文字の区別

デフォルトでは、属性セレクタは大文字と小文字を区別しません。大文字と小文字を区別する場合は、s 識別子を使用します。


<input type="text" name="userName">

input[name="username"] は、大文字と小文字を区別しないため、要素を選択します。

input[name="userName" s] は、大文字と小文字を区別するため、要素を選択しません。


名前空間

デフォルトでは、属性セレクタは名前空間を考慮しません。特定の名前空間の属性を選択するには、名前空間プレフィックスを使用します。


<svg xmlns:xlink="http://www.w3.org/1999/xlink">
  <a xlink:href="https://www.example.com">リンク</a>
</svg>

a[xlink|href="https://www.example.com"] は、xlink 名前空間の href 属性が "https://www.example.com" である <a> 要素を選択します。


注意事項

  • 属性セレクタは、クラスセレクタや ID セレクタに比べてパフォーマンスが劣る場合があります。パフォーマンスが重要な場合は、可能な限りクラスセレクタや ID セレクタを使用してください。
  • 属性セレクタは強力な機能ですが、使いすぎると CSS が複雑になり、保守が難しくなる可能性があります。適切な場面で使用してください。

まとめ

この記事では、CSS 属性セレクタについて解説しました。属性セレクタは、HTML 要素の属性に基づいて要素を選択するための強力な機能です。属性の存在、値の完全一致、部分一致など、さまざまな条件で要素を選択することができます。

属性セレクタを使用する際は、パフォーマンスと保守性に注意してください。


関連QA

Q1: 属性セレクタとクラスセレクタの違いは何ですか?

A1: 属性セレクタは要素の属性に基づいて要素を選択するのに対し、クラスセレクタは要素の class 属性の値に基づいて要素を選択します。一般的に、クラスセレクタの方がパフォーマンスに優れています。

Q2: 属性セレクタを使用して、特定の属性を持たない要素を選択できますか?

A2: はい、:not() セレクタを使用することで、特定の属性を持たない要素を選択できます。 例えば、a:not([href]) は、href 属性を持たない <a> 要素を選択します。

Q3: 属性セレクタは、すべてのブラウザでサポートされていますか?

A3: ほとんどのモダンブラウザでは、属性セレクタがサポートされています。ただし、古いブラウザの中には、サポートしていないものもあります。

その他の参考記事:CSS 組み合わせセレクター