CSSの属性セレクタのサンプルです。
目次
- 1.要素名[属性名]
- 2.要素名[属性名="値"]
- 3.要素名[属性名~="値"]
- 4.要素名[属性名|="値"]
- 5.要素名[属性名^="値"]
- 6.要素名[属性名$="値"]
- 7.要素名[属性名*="値"]
1.要素名[属性名]
- 指定の属性がある要素にCSSを適用します。
コード
2行目は、pが要素でclassが属性です。12-14行目を対象にします。
6行目は、typeは属性です。属性のみ指定しています。16-17行目を対象にします。
<style>
p[class]{
color:blue;
}
[type]{
color:red;
}
</style>
<body >
<p class="p1">あいうえお</p>
<p class="p2">かきくけこ</p>
<p class="p3">さしすせそ</p>
<input type="button" id="b1" value="ボタン" />
<input type="button" id="b2" value="ボタン" />
</body>
サンプル
上記コードの実行イメージです。

2.要素名[属性名="値"]
- 指定の属性の値がある要素にCSSを適用します。
コード
2行目は、pが要素でclassが属性でp21が値です。8行目を対象にします。
9行目は、値が異なるのでCSSは適用されません。
<style>
p[class="p21"]{
color:blue;
}
</style>
<body >
<p class="p21">あいうえお1</p>
<p class="p22">あいうえお2</p>
</body>
サンプル
上記コードの実行イメージです。
あいうえお1
あいうえお2
3.要素名[属性名~="値"]
- 属性の値が複数ある場合で、指定の属性の値がどれかひとつに合致する要素にCSSを適用します。
コード
2行目は、pが要素でclassが属性でp32が値です。11行目は3つの値の中にp32があるので対象にします。
5行目は、比較のため、要素名[属性名~="値"]としていません。そのため12行目は値のp34がありますが、対象になりません。12行目の値がp34のみであれば対象になります。
<style>
p[class~="p32"]{
color:blue;
}
p[class="p34"]{
color:green;
}
</style>
<body >
<p class="p31 p32 p33">あいうえお</p>
<p class="p33 p34 p35">あいうえお</p>
</body>
サンプル
上記コードのサンプルです。
あいうえお
あいうえお
4.要素名[属性名|="値"]
- ハイフン(-)で区切られた属性の値が複数ある場合で、指定の属性の値で始まっている要素にCSSを適用します。
- 一般的にlang属性で使用されます。
コード
2行目は、pが要素でlangが属性でenが値です。8行目のlang属性は、指定の値で始まっているのでCSSが適用されます。
9行目のlang属性は、指定の値で始まっていないのでCSSが適用されません。
<style>
p[lang|="en"] {
color: red;
}
</style>
<body >
<p lang="en-us en-gb en-au">テスト41</p>
<p lang="zh-CN zh-TW">テスト42</p>
</body>
サンプル
上記コードのサンプルです。
テスト41
テスト42
5.要素名[属性名^="値"]
- 指定の属性の値で始まる要素にCSSを適用します。
コード
2行目は、inputが要素でnameが属性でabcが値です。8行目のname属性は、指定の値で始まっているのでCSSが適用されます。
9行目のname属性は、指定の値で始まっていないのでCSSが適用されません。
<style>
input[name^="abc"]{
background-color:LightSkyBlue;
}
</style>
<body >
<input type="text" name="abc123" value="t51" maxlength="5">
<input type="text" name="xyz123" value="t52" maxlength="5">
</body>
サンプル
上記コードのサンプルです。
6.要素名[属性名$="値"]
- 指定の属性の値で終わる要素にCSSを適用します。
コード
2行目は、inputが要素でnameが属性で789が値です。8行目のname属性は、指定の値で終わっているのでCSSが適用されます。
9行目のname属性は、指定の値で終わっていないのでCSSが適用されません。
<style>
input[name$="789"]{
background-color:LightSkyBlue;
}
</style>
<body >
<input type="text" name="xyz789" value="t61" maxlength="5">
<input type="text" name="xyz123" value="t62" maxlength="5">
</body>
サンプル
上記コードのサンプルです。
7.要素名[属性名*="値"]
- 指定の属性の値が含まれている要素にCSSを適用します。
コード
2行目は、inputが要素でnameが属性でefが値です。8行目のname属性は、指定の属性の値が含まれているのでCSSが適用されます。
9行目のname属性は、指定の属性の値が含まれていないのでCSSが適用されません。
<style>
input[name*="ef"]{
background-color:LightSkyBlue;
}
</style>
<body >
<input type="tpt" name="def567" value="t71" maxlength="5">
<input type="tpt" name="hij345" value="t72" maxlength="5">
</body>
サンプル
上記コードのサンプルです。
リンク
以下はMDNの属性セレクタのリンクです。
https://developer.mozilla.org/ja/docs/Web/CSS/Attribute_selectors
関連の記事
CSSの書き方とセレクタの一覧
CSS 子孫セレクタ/子セレクタ/隣接セレクタ/一般兄弟セレクタのサンプル
CSS 複数のセレクタを指定する/絞り込むサンプル
CSS 疑似クラスのサンプル(:link/:visited/:hover/:active/:focus/:target/:lang/:enabled/:disabled/:checked)
CSS 疑似クラスのサンプル(:nth-child/:nth-last-child/:empty/:not)
CSS 疑似要素のサンプル(::first-line/::first-letter/::before/::after)