HTML/CSS:文字とフォント
1学習の目的
- 文字サイズ・行間・字間を調整し、読みやすい文章を作れるようになる。デザインの印象を最も大きく左右するのが文字の設定になる。
- 相対指定(em・rem・倍率)を理解する。画面サイズや親要素に応じて伸縮する、柔軟なデザインの土台になる。
2基礎解説
| プロパティ | 役割 | 推奨値の目安 |
|---|---|---|
| font-size | 文字の大きさ | 本文 16px |
| line-height | 行の高さ(行間) | 1.6〜1.8 |
| font-weight | 太さ | bold / 700 |
| text-align | 揃え位置 | left / center / right |
- line-height は単位なしの数値で指定する。1.8 と書けば「文字サイズの1.8倍」になり、文字を大きくしても行間が自動で追随する。日本語の本文は 1.6〜1.8 が読みやすい。
- em は親要素基準、rem はルート(html)基準。em は入れ子になると倍々に膨らむので、迷ったら rem を使うほうが予測しやすい。
- フォントは複数指定して「保険」をかける。font-family: "Noto Sans JP", sans-serif; のように書けば、最初のフォントが無い環境では次が使われる。最後は必ず総称名で締める。
- リンクの下線を消すなら text-decoration: none;。ただし消すと「押せる」と分からなくなるので、色や背景で代わりの手がかりを用意する。
- 中央揃えは短い見出しだけに使う。長い本文を中央揃えにすると、行の開始位置がバラバラになり読みにくくなる。本文は左揃えが原則。
現場使用例:本文の可読性設計、見出しの強調、ボタンの文字揃え、コードの等幅表示。文字の設定を整えるだけで、ページの印象は大きく変わる。
/* 本文の基本設定 */
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問)
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 の行の高さになる。文字サイズを変えれば行間も自動で追随する。
A. 1.0 B. 1.2 C. 1.6〜1.8 D. 3.0 選択★☆☆無料
解答 == C
詰まりすぎず、空きすぎない値。
C
1.0だと行が詰まって読みにくく、3.0だと離れすぎて視線が迷う。日本語は漢字が多く画数も多いので、英語より広めが好まれる。
text-align が center、font-weight が700
text-align: center; と font-weight: bold; を指定する。
<style>
h1 {
text-align: center;
font-weight: bold;
}
</style>
<h1>ページタイトル</h1>中央揃えは短い見出しに向く。長い文章を中央揃えにすると各行の開始位置がずれ、読みにくくなる。
<style>
p {
font-size: 16px;
____: 2;
}
</style>
<p>行間を広げた文章</p>line-height が32px
「行の高さ」を意味する11文字のプロパティ(ハイフン含む)。
line-height
16px × 2 = 32px の行の高さになる。単位を付けずに書くのが、追随性の高い書き方。
A. 親要素の文字サイズ B. ルート(html)の文字サイズ C. 画面の幅 D. 固定で16px 選択★☆☆無料
解答 == B
root の em という意味。
B
rem はどこで使っても同じ大きさになる。em は親基準なので入れ子で膨らむが、rem なら予測しやすい。
text-decoration が none、色が正しい
text-decoration: none; で下線が消える。
<style>
a {
text-decoration: none;
color: #0066cc;
}
</style>
<a href="#">リンクテキスト</a>下線を消すなら色で補う。何の手がかりも無いと、リンクだと気づかれずクリックされなくなる。
<style>
body {
____: sans-serif;
}
</style>
<p>ゴシック体の文章</p>font-family が sans-serif
「フォントの種類」を意味する11文字のプロパティ(ハイフン含む)。
font-family
sans-serif はゴシック体の総称。具体的なフォント名が無くても、環境に応じた適切なフォントが選ばれる。
A. 16px B. 24px C. 30px D. 1.5px 選択★★☆広告解放
解答 == C
em は親要素の文字サイズが基準。
C
20px × 1.5 = 30px。em は親基準なので、入れ子が深くなるほど計算が複雑になる——これが rem が好まれる理由。
letter-spacing が2px
letter-spacing で文字と文字の間隔を指定する。
<style>
h1 {
letter-spacing: 2px;
}
</style>
<h1>ゆったりした見出し</h1>字間を少し広げると上品な印象になる。ただし広げすぎると読みにくくなるので、見出しで 0.05em 程度が目安。
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問)
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行が本文設計の基本セット。どんなサイトでもまずこれを書き、そこから調整していく。
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倍」という関係が数値に表れ、全体のバランスを調整しやすい。
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になり、入れ子が深いほど予測が難しくなる。
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)。補足的な文章を本文より少し小さくすると、情報の主従が視覚的に伝わる。
bodyとcodeのフォントが違う
code タグには monospace(等幅)を指定するのが慣習。
<style>
body {
font-family: sans-serif;
}
code {
font-family: monospace;
}
</style>
<p>変数は <code>const price = 100;</code> のように書きます。</p>等幅フォントは全ての文字が同じ幅。コードでは桁の位置が揃うことが重要なので、専用のフォントを使う。
5仕上げ課題
CSSの指定
① body:フォント sans-serif、サイズ 16px、行間 1.8、色 #333333
② h1:2rem、太字、字間 1px、中央揃え
③ h2:1.5rem、色 navy
④ .lead(導入文):1.125rem、色 #666666
⑤ a:下線なし、色 #0066cc
⑥ code:monospace
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 と書いても同じ結果だが、「本文の何倍か」という関係は読み取れない。
次章では色と背景を扱う。文字が整ったところに配色を加えると、ページは一気に「デザインされたもの」に見えてくる。