CSS・見た目をもっと自由に

クラスで“狙って”飾る

タグ名だと「全部」変わってしまう。この段落だけ・このボタンだけを狙うには、クラスという目印を使おう。CSSがぐっと自由になる回。

ph1 といったタグ名のセレクタは、同じタグをぜんぶまとめて変えます。でも「この段落だけ赤くしたい」「このボタンだけ目立たせたい」——そんな”狙い撃ち”がしたくなることがあります。そこで登場するのがクラスです。

タグ名だけだと「全部」になってしまう

たとえば p と書くと、ページ中の段落がすべて同じ見た目になります。

p {
  color: tomato;
}

これだと「ここの段落だけ」という細かい注文ができません。ぜんぶか、ゼロか。もう少し、狙いを絞りたいですよね。

目印をつけて、狙って飾る

そこで、飾りたいタグに class目印(名前)をつけます。

<p class="note">ここだけ目立たせたい</p>
<p>ふつうの段落はそのまま</p>

そしてCSSでは、その名前の前に . をつけて指定します。

.note {
  color: tomato;
}

これで、class="note" をつけた段落だけが赤くなります。ほかの段落はそのまま。「この子だけ」という狙い撃ちができました。

実際に動かすと、こうです。同じ<p>でも、class="note"をつけた段落だけが赤くなります。

.noteをつけた2つだけが赤く。同じクラスは何個でも、まとめて同じ飾りにできます。

クラス名の決めかた

名前は自由——といっても、あとで困らないコツがいくつかあります。

  • 半角英数字とハイフン(-でつける(profile-card のように)
  • 数字始まりにしない1st-card はダメ、card-1 はOK)
  • 見た目でなく役割で名づける(red-text より warning。あとで色を青に変えても、名前が嘘にならない)
  • 大文字と小文字は区別されるNotenote は別物。ぜんぶ小文字にそろえるのが定番)

とくに3つめは大事な考え方。クラスは「どう見せたいか」ではなく「それが何なのか」で名づけると、長く使える名前になります。最初は「あとで読んで意味がわかる名前」を心がければ十分です。

クラスを2つ並べて、中の一部だけ狙う

クラスは1つずつ使うだけでなく、スペースで2つ並べると「この中にある、あのクラス」という狙い方もできます。

h1 .name {
  color: tomato;
}

これは「h1 の中にある、class="name" の部分だけ」を狙うという意味。h1.nameのあいだのスペースが「その中の」をあらわす合図です。見出しぜんぶではなく、名前の文字だけを色づけたいときに役立ちます。

実際に動かすと、こうです。見出しの文字はそのままで、<span class="name">で囲んだ名前の部分だけが色づきます。

h1の中にある.nameだけを狙えました。まわりの文字はそのまま、名前の部分だけが色づきます。

このレッスンのまとめ

  1. タグ名のセレクタは「同じタグ全部」を変える
  2. class="名前" で目印をつけ、CSSで .名前狙い撃ちできる
  3. .(ドット)は CSSのセレクタ側だけにつける
  4. h1 .name のようにスペースで並べると、「この中にあるあれ」を狙える

やってみよう:カードにクラスをつける

しまちゃんのページの「じこしょうかい」「すきなもの」「れんらく」の3つの<section>に、共通のクラスcardをつけましょう。名前の<span>にもclass="name"をつけます。

<section id="about" class="card">
  ...
</section>
.card {
  background-color: white;
}
h1 .name {
  color: #e8734e;
}

3つの<section>ぜんぶに同じclass="card"をつけたので、CSSも1回書くだけで3つまとめて白い背景に。名前だけが、あたたかいオレンジ色になります。

ブラウザ表示。じこしょうかい・すきなもの・れんらくの3つの箱が白い背景になり、見出しの名前の文字だけがオレンジ色になっている
同じクラスをつけた3つが、まとめて同じ見た目に。名前だけは狙い撃ちで色が変わりました。

この.cardは、これからの章で枠線・角丸・影を足していく”しまちゃんの白いカード”のはじまりです。

よくある質問

classとidは何が違うの?
どちらもタグにつける目印ですが、classは同じ名前を何個でも使えるのに対し、idは1ページに1回だけの名札です。見た目の指定にはclassを使うのが基本で、idはページ内リンクの行き先などに使います。
クラス名は日本語でもいいの?
動くことは動きますが、半角英数字とハイフンでつけるのが定番です。世界中のコードがこの流儀なので、noteやcardのような英単語の名前に慣れておくのがおすすめです。
クラスをつけたのにCSSが効かないときは?
HTML側のclassの名前とCSS側の名前が、一字一句同じかを確かめましょう。大文字と小文字も区別されます。CSS側の先頭のドットの書き忘れも、よくある原因です。