niwaka-web

webサイト構築関連のにわか知識集

CSS

【CSS】属性セレクタの使い方の覚書

投稿日:

ニワカが個人的に使いこなせていないCSSセレクタを覚えるための個人的メモです。
使いこなせてないCSSセレクタ第4弾「属性セレクタ」の覚書。

属性セレクタの概要

属性セレクタは、HTMLなどの属性と一致した場合に適用されえるセレクタ。
らしです。で、属性って何となりますが、下記にaタグでの例を挙げますがhrefやtitle、target、そしてclassやidも属性になるようです。

上記で言うとaが要素名、titleが属性名で、タイトルが属性値になる感じです。他の属性も同様。

E[foo]の場合は

要素[属性]{
  プロパティ: 値;
}

属性セレクタの使用例

E[foo]

まずは属性セレクタの基本となるE[foo](要素名[属性名])の使用例をhtmlとcssと共に紹介。

html

<p title="適用される">title属性があるので適用される</p>
<p>title属性がないので適用されない</p>

css

p[title] {
  color:red;
}

実際の表示

E[foo=”bar”]

続いてE[foo=”bar”](要素名[属性名=”属性値”])の使用例をhtmlとcssと共に紹介。
こちらは属性値まで指定し、属性値が完全一致の際に適用されます。

html

<p class="red">属性値が完全一致しているので適用される</p>
<p class="redred">属性値が完全一致してないので適用されない</p>
<p class="blue">属性値が完全一致してないので適用されない</p>

css

p[class="red"] {
  color:red;
}

実際の表示

E[foo~=”bar”]

E[foo~=”bar”](要素名[属性名~=”属性値”])の使用例をhtmlとcssと共に紹介。
こちらは指定した属性の属性値が一つでも完全一致した際に適用されます。属性値が複数指定されていた時にその中で属性値が一致されれば良いということ。classで複数した時の一つが一致した時など。
「~」の記号はチルダ。(tilde)

html

<p class="red blue">完全一致している属性値があるので適用される。</p>
<p class="blue red">完全一致している属性値があるので適用される。</p>
<p class="blue green">完全一致している属性値がないので適用されない。</p>

css

p[class~="red"] {
  color:red;
}

実際の表示

こちらでは外部リンクを単純に赤色にしましたが、他のサイトの紹介などでは外部リンクだった場合はアイコンを付けるなどのサンプルを多く見ました。

E[foo^=”bar”]

E[foo^=”bar”](要素名[属性名^=”属性値”])の使用例をhtmlとcssと共に紹介。
こちらは指定した属性の属性値が前方一致した際に適用されます。属性値の始まりが一緒のもの。
「^」の記号はキャレットとかカレットと読むようです。(caret)

html

<a href="http://wwww.yahoo.co.jp">属性値と前方一致しているので適用される。</a>
<a href="http://wwww.yahoo.co.jp">属性値と前方一致しているので適用される。</a>
<a href="/about.html">属性値と前方一致していないので適用されない。</a>

css

a[href^="http"] {
  color:red;
}

実際の表示

こちらでは外部リンクを単純に赤色にしましたが、他のサイトの紹介などでは外部リンクだった場合はアイコンを付けるなどのサンプルを多く見ました。

E[foo$=”bar”]

E[foo$=”bar”](要素名[属性名$=”属性値”])の使用例をhtmlとcssと共に紹介。
こちらは指定した属性の属性値が後方一致した際に適用されます。属性値の終わりが一緒のもの。

html

<a href="aaa.pdf">属性値が後方一致しているので適用される。</a><br>
<a href="about.html">属性値が後方一致していないので適用されない。</a>

css

a[href$=".pdf"] {
  color:red;
}

実際の表示

こちらでは単純に赤色にしましたが、リンク先がpdfの場合はアイコンを付けるなどの時に使えそうですね。

E[foo*=”bar”]

E[foo*=”bar”](要素名[属性名*=”属性値”])の使用例をhtmlとcssと共に紹介。
こちらは指定した属性の属性値が部分一致している際に適用されます。指定した属性値が含まれるものなので完全一致していなくて良い。
「*」の記号はアスタリスク。(asterisk)

html

<p class="bluered">一致している属性値があるので適用される。</p>
<p class="blue red yellow">一致している属性値があるので適用される。</p>
<p class="blue green">一致している属性値がないので適用されない。</p>

css

p[href*="red"] {
  color:red;
}

実際の表示

CSS HAPPYLIFE ZEROさんでは、特定のディレクトリの画像にボーダーをつける例を紹介していますが、使いどころが難しそうですね。同じ名称を含むcssとかにも使えそうですが、今の所これというのが思いつきません。

E[foo|=”bar”]

E[foo|=”bar”](要素名[属性名|=”属性値”])の使用例をhtmlとcssと共に紹介。
こちらは指定した属性の属性値が一致するか「属性値-(ハイフン)」で始まる値が一致している際に適用されます。
「|」の記号はバーティカルバーとかバーティカルラインとかパイプラインと読まれるようです。英語でvertical bar、vertical lineとかあるので縦棒、縦線の意味なのでそんな感じかと。

html

<a hreflang="en" href="http://www.yahoo.com">属性値が一致しているので適用される。</a><br>
<a hreflang="en-us" href="http://www.yahoo.com">属性値の始まり(-の前まで)が一致しているので適用される。</a><br>
<a hreflang="ja" href="/about.html">属性値が一致していないので適用されない。</a>

css

a[href|="en"] {
  color:red;
}

実際の表示

他言語サイトなどで利用出来るかもしれませんがなかなか使わない気が個人的にはします。classのハイフン区切りで始まりが同じものになら使いどころがあるかもしれないですね。(例:btn-〇〇〇みたいのが複数ある時など)

個人的メモ

一応、IEはIE7以降対応のセレクタ。

参照ページ

記事にする際に参考にさせていただいたページ。
これまでのと違い、複数ページで紹介されているものは一部ページのリンクになります。

-CSS
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【CSS】画像とテキストをレスポンシブでPCで左右交互にスマホで上下にレイアウト【メモ】

今回の記事は、前回の記事の続きになります。 レスポンシブサイトでよく見かける画像とテキストを左右交互に、スマホで上下に配置してくレイアウトをflexboxを利用して実装する方法の個人的メモ。 ようやく …

【Bootstrap4】グリッドレイアウト(列の自動レイアウト)

Bootstrap4のグリッドレイアウトの説明は長いので列の自動レイアウトは別ページに。 Bootsatrap4からはグリッドシステムにcss3のflexboxが利用されるようになりました。 .col …

Font Awesome 5の使い方【SVGとWeb fontsの比較】

これまでのページにも書いていますがFont Awesome 5の使い方は、 SVG with JavaScript(JavaScriptとSVGによる描画)と Web Fonts with CSS(C …

【CSS】擬似要素の使い方の覚書

ニワカが個人的に使いこなせていないCSSを覚えるための個人的メモです。 比較的利用している「擬似要素」の覚書。 「擬似要素と擬似クラスの違いの覚書」と多少内容重複するかと思います。 目次 擬似要素の概 …

Font Awesome 5の使い方【概要】

webでよく利用されているアイコンフォントFont Awesomeのバージョン5がいつの間にかリリースされていたので使い方を自分の備忘録として書き留めておきます。 こちらの記事を書く際にまだFont …