CSS ・ CSSの記法

[attr]

属性の値で指定する(含む・始まる・終わる)

class や href などの属性の値で要素を選ぶセレクタです。「〜を含む」「〜で始まる」「〜で終わる」のように、値の一部で指定することもできます。

書き方
[属性名="値"] { }
詳細度
0-1-0(クラスと同じ)
別名
ワイルドカード(講義での呼び方)
01

サンプルコード

HTML
1<p class="acthouse-title">acthouse-title</p>
2<p class="box-acthouse-content">box-acthouse-content</p>
3<p class="lead-acthouse">lead-acthouse</p>
CSS
1/* acthouse を含む → 3つすべて */
2[class*="acthouse"] {
3 padding-left: 8px;
4 border-left: 4px solid #b68235;
5}
6/* acthouse- で始まる → 1つ目だけ */
7[class^="acthouse-"] {
8 color: #2e7d5b;
9}
10/* -acthouse で終わる → 3つ目だけ */
11[class$="-acthouse"] {
12 color: #1f5fa8;
13}
02

実行結果

ブラウザでの表示左の線は3つすべて、緑は「acthouse- で始まる」1つ目、青は「-acthouse で終わる」3つ目だけに付いています
03

解説

属性セレクタは [属性名] や [属性名="値"] のように、角かっこ([ ])の中に属性を書いて要素を選びます。クラスに限らず、href・type・data-* など、どの属性にも使えます。

= の前に記号を付けると、値の一部で指定できます。*= は「〜を含む」、^= は「〜で始まる」、$= は「〜で終わる」です。似た名前のクラスをまとめて指定したいときに便利で、講義では「ワイルドカード(正規表現)」として紹介されています(実際の正規表現とは別のもので、使えるのはこの3つの記号などに限られます)。

比べられるのは属性の値の文字列全体です。class="title acthouse-lead" のようにクラスが複数あると、文字列の先頭は title なので [class^="acthouse-"] には一致しません。

詳細度はクラスセレクタと同じ(0-1-0)です。

04

応用例・注意点

書き方

書き方説明
[attr]その属性を持つ要素(値は問わない)
[attr="値"]値が完全に一致する
[attr*="値"]値を含む
[attr^="値"]値で始まる
[attr$="値"]値で終わる
[attr~="値"]空白で区切った単語のどれかが一致する
[attr="値" i]大文字・小文字を区別しない

外部リンクとPDFに印を付ける

href の始まりや終わりで、リンクの種類を見分けられます。

CSS
1a[href^="http"]::after {
2 content: " ↗";
3}
4a[href$=".pdf"]::after {
5 content: "(PDF)";
6}

入力欄の種類ごとに指定する

type 属性の値で、input の種類ごとにスタイルを分けられます。

CSS
1input[type="text"],
2input[type="email"] {
3 width: 100%;
4 padding: 8px;
5}
6input[type="checkbox"] {
7 width: 18px;
8 height: 18px;
9}

注意点

  1. 01値は " " で囲みます。英数字とハイフンだけなら省略もできますが、囲んでおくほうが確実です。
  2. 02クラスを1つ付ければ済む場面では、クラスセレクタのほうが読みやすくなります。部分一致は、名前の規則が決まっているクラスや、自分でクラスを付けられない要素に使います。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉