HTML/CSS / LESSON 09 / HT09

HTML/CSS:文字とフォント

1学習の目的

2基礎解説

プロパティ役割推奨値の目安
font-size文字の大きさ本文 16px
line-height行の高さ(行間)1.6〜1.8
font-weight太さbold / 700
text-align揃え位置left / center / right
✅ 覚えるべき重要ポイント
  1. line-height は単位なしの数値で指定する1.8 と書けば「文字サイズの1.8倍」になり、文字を大きくしても行間が自動で追随する。日本語の本文は 1.6〜1.8 が読みやすい
  2. em は親要素基準、rem はルート(html)基準。em は入れ子になると倍々に膨らむので、迷ったら rem を使うほうが予測しやすい。
  3. フォントは複数指定して「保険」をかけるfont-family: "Noto Sans JP", sans-serif; のように書けば、最初のフォントが無い環境では次が使われる。最後は必ず総称名で締める
  4. リンクの下線を消すなら text-decoration: none;。ただし消すと「押せる」と分からなくなるので、色や背景で代わりの手がかりを用意する。
  5. 中央揃えは短い見出しだけに使う。長い本文を中央揃えにすると、行の開始位置がバラバラになり読みにくくなる。本文は左揃えが原則

現場使用例:本文の可読性設計、見出しの強調、ボタンの文字揃え、コードの等幅表示。文字の設定を整えるだけで、ページの印象は大きく変わる

/* 本文の基本設定 */
body {
  font-family: "Noto Sans JP", sans-serif;  /* 無ければ次を使う */
  font-size: 16px;
  line-height: 1.8;      /* 単位なし=文字サイズの1.8倍 */
  color: #333333;
}

/* 見出し */
h1 {
  font-size: 2rem;       /* ルートの2倍=32px */
  font-weight: bold;
  letter-spacing: 0.05em;  /* 字間を少し広げる */
}

/* 中央揃え(短い見出しに向く) */
.title {
  text-align: center;
}

/* リンクの下線を消す */
a {
  text-decoration: none;
  color: #0066cc;        /* 色で「押せる」と伝える */
}

/* コードは等幅フォントで */
code {
  font-family: monospace;
}

/* em は親基準なので入れ子で膨らむ */
div      { font-size: 20px; }
div p    { font-size: 1.5em; }   /* 20 × 1.5 = 30px */

/* rem はルート基準なので予測しやすい */
.note    { font-size: 1.5rem; }  /* 常に 16 × 1.5 = 24px */

3基本ドリル(10問)

HT09-D01 段落の文字サイズを 20px、行間を 1.8 にするHTMLを書け。 コーディング★☆☆無料
期待される結果

font-size が20px、line-height が36px

ヒント

line-height は単位なしの数値で指定する。

模範解答
<style>
  p {
    font-size: 20px;
    line-height: 1.8;
  }
</style>

<p>読みやすい行間の文章です。</p>
解説

line-height: 1.8 は「文字サイズの1.8倍」。20px × 1.8 = 36px の行の高さになる。文字サイズを変えれば行間も自動で追随する。

HT09-D02 日本語の本文に適した line-height の目安はどれか。
A. 1.0 B. 1.2 C. 1.6〜1.8 D. 3.0
選択★☆☆無料
期待される結果

解答 == C

ヒント

詰まりすぎず、空きすぎない値。

模範解答
C
解説

1.0だと行が詰まって読みにくく、3.0だと離れすぎて視線が迷う。日本語は漢字が多く画数も多いので、英語より広めが好まれる。

HT09-D03 見出し(h1)を中央揃えにし、文字を太字(bold)にするHTMLを書け。 コーディング★☆☆無料
期待される結果

text-align が center、font-weight が700

ヒント

text-align: center; と font-weight: bold; を指定する。

模範解答
<style>
  h1 {
    text-align: center;
    font-weight: bold;
  }
</style>

<h1>ページタイトル</h1>
解説

中央揃えは短い見出しに向く。長い文章を中央揃えにすると各行の開始位置がずれ、読みにくくなる。

HT09-D04 行の高さを指定するプロパティを補ってコードを完成させよ。 穴埋め★☆☆無料
コード
<style>
  p {
    font-size: 16px;
    ____: 2;
  }
</style>

<p>行間を広げた文章</p>
期待される結果

line-height が32px

ヒント

「行の高さ」を意味する11文字のプロパティ(ハイフン含む)。

模範解答
line-height
解説

16px × 2 = 32px の行の高さになる。単位を付けずに書くのが、追随性の高い書き方。

HT09-D05 rem は何を基準にした単位か。
A. 親要素の文字サイズ B. ルート(html)の文字サイズ C. 画面の幅 D. 固定で16px
選択★☆☆無料
期待される結果

解答 == B

ヒント

root の em という意味。

模範解答
B
解説

rem はどこで使っても同じ大きさになる。em は親基準なので入れ子で膨らむが、rem なら予測しやすい。

HT09-D06 リンクの下線を消し、文字色を #0066cc にするHTMLを書け。 コーディング★★☆広告解放
期待される結果

text-decoration が none、色が正しい

ヒント

text-decoration: none; で下線が消える。

模範解答
<style>
  a {
    text-decoration: none;
    color: #0066cc;
  }
</style>

<a href="#">リンクテキスト</a>
解説

下線を消すなら色で補う。何の手がかりも無いと、リンクだと気づかれずクリックされなくなる。

HT09-D07 フォントを指定するプロパティを補ってコードを完成させよ。 穴埋め★★☆広告解放
コード
<style>
  body {
    ____: sans-serif;
  }
</style>

<p>ゴシック体の文章</p>
期待される結果

font-family が sans-serif

ヒント

「フォントの種類」を意味する11文字のプロパティ(ハイフン含む)。

模範解答
font-family
解説

sans-serif はゴシック体の総称。具体的なフォント名が無くても、環境に応じた適切なフォントが選ばれる。

HT09-D08 div{font-size:20px} の中の p に font-size:1.5em を指定すると、何pxになるか。
A. 16px B. 24px C. 30px D. 1.5px
選択★★☆広告解放
期待される結果

解答 == C

ヒント

em は親要素の文字サイズが基準。

模範解答
C
解説

20px × 1.5 = 30px。em は親基準なので、入れ子が深くなるほど計算が複雑になる——これが rem が好まれる理由。

HT09-D09 字間2px 広げた見出しを作れ(h1)。 コーディング★★☆広告解放
期待される結果

letter-spacing が2px

ヒント

letter-spacing で文字と文字の間隔を指定する。

模範解答
<style>
  h1 {
    letter-spacing: 2px;
  }
</style>

<h1>ゆったりした見出し</h1>
解説

字間を少し広げると上品な印象になる。ただし広げすぎると読みにくくなるので、見出しで 0.05em 程度が目安。

HT09-D10 フォントを複数指定し、「Noto Sans JP」が無ければ sans-serif が使われるようにするHTMLを書け(body に指定)。 コーディング★★☆広告解放
期待される結果

font-family に2つ以上指定されている

ヒント

font-family: "Noto Sans JP", sans-serif; のようにカンマで区切る。

模範解答
<style>
  body {
    font-family: "Noto Sans JP", sans-serif;
  }
</style>

<p>本文です。</p>
解説

左から順に探し、見つかったものが使われる。最後は必ず総称名(sans-serif など)で締めるのが安全な書き方。

4実践シナリオ(5問)

HT09-S01 【読みやすい本文設計】body に文字サイズ 16px、行間 1.8、文字色 #333333、フォント sans-serif を指定し、段落を2つ配置せよ。 コーディング★★☆広告解放
期待される結果

body の4つの指定が正しい

ヒント

body にまとめて指定すれば、中の段落にも継承される。

模範解答
<style>
  body {
    font-size: 16px;
    line-height: 1.8;
    color: #333333;
    font-family: sans-serif;
  }
</style>

<p>1つ目の段落です。読みやすさは行間で決まります。</p>
<p>2つ目の段落です。</p>
解説

この4行が本文設計の基本セット。どんなサイトでもまずこれを書き、そこから調整していく。

HT09-S02 【見出しの階層感】h1 を 2rem、h2 を 1.5rem、本文を 1rem にし、3つを配置せよ(html の基準は16px)。 コーディング★★☆広告解放
期待される結果

h1が32px、h2が24px、pが16px

ヒント

rem はルート基準なので、16px × 倍率 で計算できる。

模範解答
<style>
  h1 { font-size: 2rem; }
  h2 { font-size: 1.5rem; }
  p  { font-size: 1rem; }
</style>

<h1>大見出し</h1>
<h2>中見出し</h2>
<p>本文です。</p>
解説

rem で書くと比率が一目で分かる。「本文の2倍」「1.5倍」という関係が数値に表れ、全体のバランスを調整しやすい。

HT09-S03 【em の入れ子を確かめる】div に 20px、その中の p に 1.5em を指定し、実際に何pxになるか確認せよ。 コーディング★★☆広告解放
期待される結果

p が30px

ヒント

em は親要素基準。20 × 1.5 = ?

模範解答
<style>
  div {
    font-size: 20px;
  }

  div p {
    font-size: 1.5em;
  }
</style>

<div>
  <p>親の1.5倍</p>
</div>
解説

30pxになる。もしこの p の中にさらに 1.5em の要素があれば45pxになり、入れ子が深いほど予測が難しくなる。

HT09-S04 【カードの文字設計】.card の中で、h3 を 1.25rem・太字、p を 0.875rem・行間1.6・文字色 #666666 にするHTMLを書け。 コーディング★★★広告解放
期待される結果

h3とpのスタイルが正しい

ヒント

子孫セレクタ(.card h3)で範囲を限定する。

模範解答
<style>
  .card h3 {
    font-size: 1.25rem;
    font-weight: bold;
  }

  .card p {
    font-size: 0.875rem;
    line-height: 1.6;
    color: #666666;
  }
</style>

<div class="card">
  <h3>商品名</h3>
  <p>商品の説明文がここに入ります。</p>
</div>
解説

0.875rem は14px(16 × 0.875)。補足的な文章を本文より少し小さくすると、情報の主従が視覚的に伝わる。

HT09-S05 【等幅フォントと通常フォント】body を sans-serif、code を monospace にし、段落の中に code を含めたHTMLを書け。 コーディング★★★広告解放
期待される結果

bodyとcodeのフォントが違う

ヒント

code タグには monospace(等幅)を指定するのが慣習。

模範解答
<style>
  body {
    font-family: sans-serif;
  }

  code {
    font-family: monospace;
  }
</style>

<p>変数は <code>const price = 100;</code> のように書きます。</p>
解説

等幅フォントは全ての文字が同じ幅。コードでは桁の位置が揃うことが重要なので、専用のフォントを使う。

5仕上げ課題

HT09-FINAL 【記事ページの文字設計】読みやすさを重視した記事ページのCSSを書け。

CSSの指定
body:フォント sans-serif、サイズ 16px、行間 1.8、色 #333333
h12rem、太字、字間 1px、中央揃え
h21.5rem、色 navy
.lead(導入文):1.125rem、色 #666666
a:下線なし、色 #0066cc
codemonospace

HTML の内容
・h1「CSSで文字を整える」
・p.lead「読みやすさは文字の設定で決まります。」
・h2「行間の重要性」
・段落(中に code「line-height: 1.8;」とリンク「詳しく見る」を含む)

確認したいこと:body の行間1.8が段落に継承され、リンクだけ色が変わる
総合★★★広告解放
期待される結果

すべての文字設定が正しい

ヒント

body にまとめて基本設定を書き、個別に上書きする。line-height: 1.8 は 16px × 1.8 = 28.8px になる。h1 の 2rem は32px。

模範解答
<style>
  body {
    font-family: sans-serif;
    font-size: 16px;
    line-height: 1.8;
    color: #333333;
  }

  h1 {
    font-size: 2rem;
    font-weight: bold;
    letter-spacing: 1px;
    text-align: center;
  }

  h2 {
    font-size: 1.5rem;
    color: navy;
  }

  .lead {
    font-size: 1.125rem;
    color: #666666;
  }

  a {
    text-decoration: none;
    color: #0066cc;
  }

  code {
    font-family: monospace;
  }
</style>

<h1>CSSで文字を整える</h1>

<p class="lead">読みやすさは文字の設定で決まります。</p>

<h2>行間の重要性</h2>

<p>行の高さは <code>line-height: 1.8;</code> のように指定します。<a href="#">詳しく見る</a></p>
解説

このページは、文字の設定だけで読みやすさが大きく変わる。もし line-height を指定しなければ、ブラウザの既定値(約1.2)のまま行が詰まり、日本語の本文としては窮屈な見た目になる。たった1行の指定が、ページ全体の読み心地を決めている。

line-height: 1.8 を単位なしで書いた点も重要だ。計算結果は 16px × 1.8 = 28.8px になるが、もし文字サイズを18pxに変えれば行間も自動で32.4pxに追随する。ここを 28.8px と固定値で書いていたら、文字だけ大きくなって行が詰まってしまう。

rem の使い方にも注目してほしい。h1 が 2rem、h2 が 1.5rem、導入文が 1.125rem——本文を1としたときの比率が、数値を見るだけで分かる。px で 32/24/18 と書いても同じ結果だが、「本文の何倍か」という関係は読み取れない。

次章では色と背景を扱う。文字が整ったところに配色を加えると、ページは一気に「デザインされたもの」に見えてくる。