HTML・CSS

CSS入門:HTMLにスタイルシートを読み込み、文字と背景色を変更する

この記事でわかること

外部CSSの読み込みからセレクター・プロパティ・値、文字色・背景・行間まで。HTMLのどの要素にCSSが効くかを確かめます。

第4回では、前回までに作ったHTMLへ初めてCSSを適用します。目標はCSSファイルの読み込みを確認し、どの要素にどの指定が効くのかを説明できるようになることです。大きなレイアウトを作る前に、文字、背景、行間を少しずつ変更します。

HTMLからCSSを読み込む

styles.cssを同じフォルダーに作る

index.htmlと同じ場所にstyles.cssを作ります。ファイル名だけではブラウザーは自動で読み込まないので、HTMLのhead内に次の1行を追加します。置き場所はtitleの後などで構いません。

<link rel="stylesheet" href="./styles.css">

ここでrel="stylesheet"はスタイルシートであること、hrefはCSSファイルの場所を表します。style.cssstyles.cssのような小さな違いでも読み込みに失敗します。完成版ZIPには、この行を追加済みのHTMLが含まれます。

CSSの完成コード

この回のstyles.css全体は次のとおりです。

body {
  margin: 0;
  font-family: system-ui, sans-serif;
  line-height: 1.8;
  color: #172b29;
  background: #fbfaf5;
}
a { color: #175d53; }
h1, h2, h3 { line-height: 1.4; }
.hero { background: #e8f0dc; }
.card { background: #fff; }

保存してページを再読み込みすると、背景が淡い色になり、文字とリンクの色、行間が変わります。ページ上部の紹介部分には別の背景色が付きます。この時点では余白やカードの並び方はまだ整いません。1回の変更を小さくすると、CSSが読み込めているか判断しやすくなります。

CSSのルールを読む

セレクター・プロパティ・値

bodyのように「どれに適用するか」を指定する部分がセレクターです。colorがプロパティ、#172b29が値です。波括弧の中に宣言を並べ、各宣言をセミコロンで区切ります。colorは文字色、backgroundは背景、line-heightは行の高さを指定します。

.heroclass="hero"が付いた要素を選びます。CSS側の先頭にあるピリオドは、HTMLのクラス名には含めません。h1, h2, h3はカンマで複数の対象を列挙しています。セレクター間の空白とは意味が違います。

要素・クラス・子孫セレクター

全段落を変えるならp、特定の部品だけなら.cardのようなクラスを使います。.card pはカードの内側にある段落を選ぶ子孫セレクターです。次のコードを一時的に末尾へ追加し、カード内の段落だけが変わることを確認したら削除してください。

.card p {
  color: #5a3922;
}

#lessonsはIDセレクターですが、スタイルの再利用や優先順位の管理を考えると、部品の見た目はクラスを中心に指定すると整理しやすくなります。IDはページ内リンクやJavaScriptの目印として残せます。

読みやすい文字を設定する

フォントと行間

system-uiはOSのUI向けフォント、sans-serifは代替として使う総称フォントです。同じ指定でもOSによって字形が変わるため、特定のパソコンでの見た目だけを前提にしません。本文のline-height: 1.8は文字サイズに対する倍率です。見出しは1.4にして、大きな文字の行間が広くなりすぎないようにしています。

px・rem・パーセントを使い分ける

pxはCSSピクセル単位です。remはルート要素の文字サイズを基準にします。幅の%は主に包含ブロックの幅が基準ですが、プロパティによって基準が異なるため「何の割合か」を確認します。文字サイズを変更できない固定レイアウトにせず、後の回で相対的なサイズも使っていきます。

CSSが効かないときに確認する

読み込みと打ち消し線を分けて調べる

背景を変えても何も変わらないときは、ファイルを保存したか、linkのパスが合っているかを確認します。開発者ツールのNetworkでstyles.cssを探し、見つからないエラーがないか調べます。ElementsのStylesでルールが見えているのに打ち消し線がある場合は、別の指定が優先されています。優先順位は次回扱います。

練習問題

.heroの背景色、リンクの色、本文の行間を1つずつ変更してください。毎回保存して、変化を確認してから次へ進みます。リンクの下線は最初から消さず、文字色だけに頼らなくてもリンクとわかる状態を保ちましょう。

参考資料

この回の完成版と学習の続き

第4回の見本をブラウザーで開く · 第4回の完成コードをダウンロード

ZIPを展開してindex.htmlを開けば、この回の完成時点から試せます。コードを変更する場合は、ZIP内のファイルをテキストエディターで編集して保存してください。

前の回:画像・パス・入力フォーム

次の回:余白・幅・ボックスモデルと優先順位

HTML・CSS連載の学習順へ戻る

y.
WRITTEN BY

y_ymo10

SEの部屋で、HTML・CSSからJavaScript・React・Next.jsまで、Web制作の開発ノートを公開しています。

ほかの開発ノートを読む →