home
twitter
ページトップへ
目次
  • そもそもCSSの「セレクター」とは何か?
  • 「属性セレクター」とは何か?(attribute selector)
  • そもそも「属性」とは何か?
  • 「属性セレクター」の使い方!
  • [title] 属性名を書くタイプ
  • [href=”https://www.google.com/”] 属性値も指定するタイプ
  • [href^=”https:://”] 前方一致
  • [href$=com] 後方一致
  • [href*=””] 部分一致
  • [class~=”logo”] 複数の値の中に含まれる
  • [href*=”active” i] 大文字小文字の区別なし
  • [href*="cAsE" s] 大文字小文字の区別あり
  • [lang|="en"] 「-」ハイフン付き
  • 「属性セレクター」の他の使い方!
  • h2[title]要素の指定もする
  • a[href^="https"][href$=".org"] 複数つけられる(始まりと終わりの指定など)
  • 「属性セレクター」を使うことのメリット!
  • classやidを設定しなくて済む
  • コードが読みやすくなる
  • 参考リンク。
  • あわせて読みたい記事。
  • まとめ
about
categories
page
archive
皇帝ペンギンブログ

2024/02/04 (更新日:2024/07/11)

【CSS】「属性セレクター」について解説!【分かりやすい】

Categories > CSSのセレクター編
こんばんは!初めましての方は初めまして!
しゅーた(@chibasyuta)です!

この記事ではCSSの「属性セレクター」について解説します。

「属性セレクター」って何??

このような方が対象です。

この記事の内容!

  • そもそもセレクターとは何か?
  • 「属性セレクター」とは何か?
  • 「属性セレクター」の使い方
また、下の動画でも「属性セレクター」について詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!

それでは内容へ入ります!

目次
非表示
  • そもそもCSSの「セレクター」とは何か?
  • 「属性セレクター」とは何か?(attribute selector)
  • そもそも「属性」とは何か?
  • 「属性セレクター」の使い方!
  • [title] 属性名を書くタイプ
  • [href=”https://www.google.com/”] 属性値も指定するタイプ
  • [href^=”https:://”] 前方一致
  • [href$=com] 後方一致
  • [href*=””] 部分一致
  • [class~=”logo”] 複数の値の中に含まれる
  • [href*=”active” i] 大文字小文字の区別なし
  • [href*="cAsE" s] 大文字小文字の区別あり
  • [lang|="en"] 「-」ハイフン付き
  • 「属性セレクター」の他の使い方!
  • h2[title]要素の指定もする
  • a[href^="https"][href$=".org"] 複数つけられる(始まりと終わりの指定など)
  • 「属性セレクター」を使うことのメリット!
  • classやidを設定しなくて済む
  • コードが読みやすくなる
  • 参考リンク。
  • あわせて読みたい記事。
  • まとめ

そもそもCSSの「セレクター」とは何か?

セレクターの箇所を図示

CSSの「セレクター」とは「どの要素にスタイルを当てるか?」を指定する箇所のことを指します。

ふむふむ。

「属性セレクター」とは何か?(attribute selector)

「属性セレクター」とは何か?

[title] {
    background-color: skyblue;
}

「属性セレクター」を使うと、指定した属性を持つ要素を選択することができます。

上の例では、全ての「title属性を持つ要素」が選択できます。

基本的な書き方は、[]角括弧の中に属性名を書いてあげればOKです!

ふむふむ。

そもそも「属性」とは何か?

「属性」とは何か?

「属性」を使うと、HTMLの要素に追加で情報を持たせることができます。

何の情報なのか?を表す箇所を「属性名」と呼び、

そこに入る情報のことを「属性値」と呼びます。

要素によってつけられる属性はまちまちなのですが、その「属性名」をセレクターとしてスタイルを当てることができるのが「属性セレクター」ということですね!

「属性セレクター」の使い方!

「属性セレクター」といっても複数の書き方があります。それらについて細かく解説していきますね!

基本的な書き方は、[]角括弧の中に属性名を書いてあげればOKです!

「属性セレクター」の使い方は下記のように複数あります。

「属性セレクター」の使い方!

  • [title]
  • [href=”http”]
  • [href^=”htt”]前方一致
  • [href$=com]後方一致
  • [href*=””]部分一致
  • [class~=”active”] 複数の値の中に含まれる
  • [href*=”active” i] 大文字小文字の区別なし
  • [href*=”cAsE” s] 大文字小文字の区別あり
  • [lang|=”en”]「-」ハイフン付き

では、それらについて解説していきます。

[title] 属性名を書くタイプ

<div title="座右の銘">いつも心に太陽を </div>
[title] {
    background-color: skyblue;
}

最も基本的な書き方です。

[]角括弧の中に属性名を書いてあげると、その属性を持つ要素にスタイルを当てることができます。

[href=”https://www.google.com/”] 属性値も指定するタイプ

<a href="https://www.google.com/">Googleへ</a>
[href="https://www.google.com/"] {
    background-color: skyblue;
}

属性名と属性値をセットで指定することもできます。

[href^=”https:://”] 前方一致

<a href="https://www.google.com/">Googleへ</a>
<a href="https://www.yahoo.co.jp/"></a>
[href^="https://"] {
    background-color: skyblue;
}

「^」を使うことで「前方一致」の指定ができます。

例えば「href属性」の値が「https://」で始まる要素にスタイルを当てる、のような指定が可能になります。

[href$=com] 後方一致

<a href="https://www.google.com"></a>
<a href="https://www.apple.com/"></a>
[href$="com"] {
    background-color: skyblue;
}

「$」を使うことで「後方一致」の指定ができます。

例えば「href属性」の値が「com」で終わる要素にスタイルを当てる、のような指定が可能になります。

[href*=””] 部分一致

<div class="top_box_red"></div>
<div class="sub_box_blue"></div>
[class*="box"] {
    width: 100px;
    height: 100px;
}

「*」を使うことで「部分一致」の指定ができます。

例えば「class属性」の値に「box」を含む要素にスタイルを当てる、のような指定が可能になります。

「"top_box_red"」や「"sub_box_blue"」が当てはまりますね。

[class~=”logo”] 複数の値の中に含まれる

<div class="logo box foo"></div>
[class~="logo"] {
    background-color: skyblue;
}

「~」を使うことで「半角空白で区切られている複数の値の中から一致するもの1つ」という指定ができます。

例えば「class属性」の値に「logo」を含む要素にスタイルを当てる、のような指定が可能になります。

[href*=”active” i] 大文字小文字の区別なし

<a href*="camelCase">リンク</a>
[href*="camelcase"] {
    background-color: skyblue;
}

閉じ角括弧の前に「i」をつけることで、大文字小文字の「区別なし」で一致しているかどうか確認してもらうことができます。

[href*=”cAsE” s] 大文字小文字の区別あり

<a href*="camelCase">リンク</a>
[href*="camelCase"] {
    background-color: skyblue;
}

閉じ角括弧の前に「s」をつけることで、大文字小文字の「区別あり」で一致しているかどうか確認してもらうことができます。

※対応しているWebブラウザが少ないので注意が必要です。

[lang|=”en”] 「-」ハイフン付き

[lang|="en"] {
    color: brown;
}

「|」バーティカルラインを使うことで、指定した文字列の直後にハイフンがついたものだけにスタイルを当てられます。

例えば、[lang|=”en”]だと、「en-US」「en-GB」「en-CA」のように「en」から始まりそれに続けて「-」ハイフンがくるものが一致します。

「Can I use」でWebブラウザの対応状況を調べてみた

「Can I use」で調べてみた

https://caniuse.com/?search=attribute%20selector%20Case-sensitive

「Firefox」と「Firefox for Android」でしか対応していないようです、、。

なので事実上は使えないことになりますね。

ですが「s」を使わなくても、そもそも「i」を使わなければ、大文字小文字区別が区別できる言語の場合は区別されるので、「s」が使えなくても特に問題ありません!

「属性セレクター」の他の使い方!

「属性セレクター」の基本的な使い方は上述した通りです。

ですが、まだ他の使い方もあるので、そちらの方についても扱っておきます!具体的には下記があります。
  • h2[title]要素の指定もする
  • a[href^=”https”][href$=”.org”] 複数つけられる(始まりと終わりの指定など)

では、それらについても丁寧に解説していきます!

h2[title]要素の指定もする

h2[title] {
    background-color: skyblue;
}

要素セレクターの直後に属性セレクターの[]角括弧をつけることで、要素の指定もすることができます。

上の指定だと、「title属性を持ったh2要素」にスタイルが当たります。

※要素名と角括弧の間はスペースを空けない、ということに注意です。

a[href^=”https”][href$=”.org”] 複数つけられる(始まりと終わりの指定など)

a[href^="https"][href$=".org"] {
    background-color: skyblue;
}

[]角括弧を繋げて書くことで、複数の属性がついた要素にスタイルを当てることができます。

上の例は、「前方一致」と「後方一致」を組み合わせた指定になっていて、「https」から始まり「org」で終わる「href属性」を持っている「a要素」にスタイルが当たります!

※各括弧を2つ以上書いてもOKです!

「属性セレクター」を使うことのメリット!

「属性セレクター」を使うことのメリットについても、まとめておきます!

「属性セレクター」を使うことのメリット!

  • classやidを設定しなくて済む
  • コードが読みやすくなる

これらがあるのかな、と思います。

classやidを設定しなくて済む

img[src="pengin.png"] {
    object-fit: cover;
}

classやidを無暗につけると、他の要素とバッティングしてしまう確率も上がりますし、上手い命名ができないこともありますし、どんなclass名を付けようか迷うこともあります。

なのでimg要素なんかにスタイルを当てるときは、class属性をつけなくても、属性セレクターを使えば一発でスタイルが当てられるので、その方が楽ですかね。

複数の要素に共通のスタイルを当てたい時はclass属性を使うと便利なのですが、この画像だけに個別でスタイルを当てたい、のような時は属性セレクターで書いちゃった方がいいのかなと思います。

コードが読みやすくなる

<div class="container">
    <div class="box" data-category="blue"></div>
    <div class="box" data-category="red"></div>
    <div class="box" data-category="green"></div>
</div>
.box {
    width: 100px;
    height: 100px;
}
.box[data-category="blue"] {
    background-color: blue;
}
.box[data-category="red"] {
    background-color: red;
}
.box[data-category="green"] {
    background-color: green;
}

基本的なスタイルは「class」を使って指定して、個別のスタイルは「属性セレクター」を使ってあげると、コードが読みやすくなるのかなと思います。

全て「class」を使ってもOKなのですが、個別のスタイルは「属性セレクター」の箇所で指定しているんだな、と瞬時に把握することができると思うので、この方が個人的に読みやすいです。

上の例では「data-」から始まる任意の属性名を付けることができる「カスタムデータ属性」を上手く活用しています!

参考リンク。

仕様書。
https://drafts.csswg.org/selectors/#attribute-selectors

MDN。
https://developer.mozilla.org/ja/docs/Web/CSS/Attribute_selectors

あわせて読みたい記事。

大学生が夏休みにweb制作で13万円稼ぐまでにやったこと。【経験談】

関連記事

まとめ

CSSの「セレクター」とは「どの要素にスタイルを当てるか?」を指定する箇所のことを指す。

属性セレクター」を使うと、指定した属性を持つ要素を選択することができる。

「属性セレクター」の使い方は下記のように複数ある。

「属性セレクター」の使い方!

  • [title]
  • [href=”http”]
  • [href^=”htt”]前方一致
  • [href$=com]後方一致
  • [href*=””]部分一致
  • [class~=”active”]
  • [href*=”active” i]
  • [href*=”cAsE” s]
  • [lang|=”en”]

他には下記もある。

  • h2「title」要素の指定もする
  • a[href^=”https”][href$=”.org”] 始まりと終わりの指定(複数つけれる)

「属性セレクター」を使うことのメリット!

  • classやidを設定しなくて済む
  • コードが読みやすくなる
こんな感じですかね!

この記事が気に入った方は僕のTwitter(@chibasyuta)のフォローもお願いします!

また、下の動画でも「属性セレクター」について詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!

それではこんな感じでこの記事を終わります!

ではまた!

自分のロゴ!

皇帝ペンギン

全力で、書きます。
少しでもお役に立てたら幸いです。
楽しんで読んで下さい 。-_- 。
よろしくお願いします!

x(旧twitter) youtube
Categories
  • トップへ
  • ITパスポート (1)
  • programming (168)
    • CSSのアニメーション編 (26)
    • CSSのグリッドレイアウト編 (1)
    • CSSのセレクター編 (58)
    • CSSのフレックスボックス編 (1)
    • CSSのメディアクエリー編 (7)
    • CSSの基本編 (34)
    • HTMLのformタグ編 (1)
    • HTMLの基本編 (3)
    • JavaScriptの入門編 (30)
    • JavaScriptの基本編 (5)
    • Web制作をする環境を整えよう! (1)
  • Uncategorized (23)
  • VScode (1)
  • おすすめ商品! (1)
  • クラロワ (2)
  • マーケティング (17)
  • 大学生活 (7)
  • 心理学 (9)
  • 映画 (1)
  • 法学 (4)
  • 経済学 (4)
  • 読書 (7)
Pages
  • プライバシーポリシー
  • 免責事項
  • プロフィール
Archive
  • 2025年3月 (1)
  • 2025年1月 (9)
  • 2024年12月 (13)
  • 2024年11月 (5)
  • 2024年10月 (10)
  • 2024年9月 (15)
  • 2024年8月 (5)
  • 2024年7月 (6)
  • 2024年6月 (5)
  • 2024年5月 (10)
  • 2024年4月 (24)
  • 2024年3月 (11)
  • 2024年2月 (6)
  • 2024年1月 (10)
  • 2023年12月 (4)
  • 2023年11月 (3)
  • 2023年10月 (2)
  • 2023年9月 (3)
  • 2023年8月 (6)
  • 2023年7月 (3)
  • 2023年6月 (8)
  • 2023年5月 (2)
  • 2023年3月 (1)
  • 2023年2月 (1)
  • 2022年10月 (2)
  • 2022年9月 (2)
  • 2022年8月 (8)
  • 2022年7月 (2)
  • 2022年6月 (6)
  • 2022年5月 (9)
  • 2022年4月 (2)
  • 2022年2月 (4)
  • 2021年12月 (1)
  • 2021年11月 (4)
  • 2021年10月 (8)
  • 2021年9月 (14)
  • 2021年8月 (6)
  • 2021年6月 (1)
  • 2021年5月 (2)
  • 2021年4月 (1)
  • 2021年3月 (1)
  • 2021年2月 (2)
  • 2020年10月 (1)
  • 2020年7月 (1)
  • 2020年4月 (1)
  • 2020年1月 (1)
  • 2019年12月 (2)
© Copyright Syuta Chiba, 2019 All Rights Reserved.