CSS で文字を太字にする方法
font-weight は文字の太さを指定します。bold (700 と同じ) で太字に、normal (400 と同じ) で標準の太さになります。
見出し、<th>、<b>、<strong> はブラウザ自身のスタイルシートによって初期状態で太字になっているので、太字を解除するには font-weight: normal を使います。HTML で <b> と <strong> をどう使い分けるかは HTML の太字 を参照してください。
数値の段階: 100 から 900
数値には、フォントファミリーが従う標準の名前があります:
| 値 | 一般的な名前 |
|---|---|
100 | Thin |
200 | Extra Light |
300 | Light |
400 | Normal (Regular) |
500 | Medium |
600 | Semi Bold |
700 | Bold |
800 | Extra Bold |
900 | Black (Heavy) |
1 から 1000 までのどの数値も有効なので、450 や 650 も書けます。違いが見えるかどうかはフォント次第です。ブラウザが描けるのは、フォントが実際に持っている太さだけです。
system-ui は OS のインターフェース用フォントで、ふつうは多くの太さを持っています。上のどの行も 2 種類の太さのどちらかにしか見えないなら、システムフォントが標準と太字しか持っていないということです。
太さを変えても見た目が変わらない理由
フォントはファイルの集まりで、太さごとに 1 ファイルのことがよくあります。指定した太さがないと、ブラウザは手持ちの中でいちばん近いものを選びます:
500なら、500、次に細い太さ、次に太い太さの順に試します。600以上なら、先に太い太さ、次に細い太さを試します。- 太字のファイルがまったくない場合、ほとんどのブラウザは標準の文字を太らせて疑似的な太字を作ります (合成ボールド)。
多くの太さを持つフォントと、ほとんどのシステムで標準と太字しか持たない serif を比べてみましょう:
serif の列では、300 と 500 はふつう標準の書体に、600 は太字の書体になります。「font-weight が効かない」という質問のほとんどはこれが答えです。CSS は正しく、フォントにその太さがないのです。可変フォント (太さの軸を持つ 1 つのファイル) なら、その範囲内のあらゆる値をなめらかに描けます。
bolder と lighter
bolder と lighter は、要素が継承した太さに対する相対指定です。決まった量を足すのではなく、次の太さのグループに進みます:
| 親の太さ | bolder の結果 | lighter の結果 |
|---|---|---|
| 100 から 349 | 400 | 100 |
| 350 から 549 | 700 | 100 |
| 550 から 749 | 900 | 400 |
| 750 から 900 | 900 | 700 |
実践的なパターン: 変数で太さの段階を決める
数値をあちこちに散らばらせず、サイト全体で 3 つか 4 つの太さを選んで名前を付けましょう:
:root {
--weight-regular: 400;
--weight-medium: 500;
--weight-bold: 700;
}
body { font-weight: var(--weight-regular); }
button { font-weight: var(--weight-medium); }
h1, h2 { font-weight: var(--weight-bold); }
よくある間違い
- どの数値でも見た目が違うと思う。 はっきり違って表示されるのは、フォントが持っている太さだけです。
- ボタンのラベルに
<b>を使う。 ボタンはfont-weightでスタイルし、<b>と<strong>はテキストに使いましょう。 - 数値を引用符で囲む。
font-weight: "700"は無効で無視されます。font-weight: 700と書きます。 - 強調のためにあちこちを太字にする。 すべてが太字だと、何も目立ちません。本文は 400 のままにしましょう。
- 小さな文字に細い太さを使う。 小さいサイズの 100 から 300 は、特にコントラストの低い背景では読みにくくなります。
よくある質問
CSS で文字を太字にするには?
要素に font-weight: bold; か、同じ意味の数値 font-weight: 700; を指定します。見出しや <strong> の太字を解除するには font-weight: normal; (400) を指定します。
font-weight にはどんな値がありますか?
1 から 1000 までの数値で、ふつうは 100 刻みで書きます。100 thin、200 extra light、300 light、400 normal、500 medium、600 semibold、700 bold、800 extra bold、900 black です。キーワードの normal と bold は 400 と 700 で、bolder と lighter は親に対する相対指定です。
font-weight の bold と 700 は同じですか?
同じです。bold は 700、normal は 400 として計算されるので、どちらの書き方でも表示は同じです。
font-weight の 500 や 600 が normal や bold と同じに見えるのはなぜですか?
フォントにその太さがないからです。フォントが 400 と 700 しか持っていないと、ブラウザはいちばん近いファイルを選ぶので、500 は 400 のように、600 は 700 のように表示されます。太さの種類が多いフォントか、可変フォントを読み込みましょう。
CSS の font-weight と <b> タグのどちらを使うべきですか?
言葉が重要なら <strong>、見た目を変えるだけのテキストには <b>、ボタン、ラベル、見出しなどの視覚的なデザインには font-weight を使います。タグは意味を持ち、プロパティは見た目だけを表します。