font-size
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
font-size
は CSS のプロパティで、フォントの大きさを定義します。フォントの大きさを変更すると、フォントの大きさに相対的な <length>
の単位例えば em
, ex
, なども更新されます。
試してみましょう
font-size: 1.2rem;
font-size: x-small;
font-size: smaller;
font-size: 12px;
font-size: 80%;
<section id="default-example">
<p id="example-element">
London. Michaelmas term lately over, and the Lord Chancellor sitting in
Lincoln's Inn Hall. Implacable November weather. As much mud in the streets
as if the waters had but newly retired from the face of the earth, and it
would not be wonderful to meet a Megalosaurus, forty feet long or so,
waddling like an elephantine lizard up Holborn Hill.
</p>
</section>
構文
/* <absolute-size> 値 */
font-size: xx-small;
font-size: x-small;
font-size: small;
font-size: medium;
font-size: large;
font-size: x-large;
font-size: xx-large;
font-size: xxx-large;
/* <relative-size> 値 */
font-size: smaller;
font-size: larger;
/* <length> 値 */
font-size: 12px;
font-size: 0.8em;
/* <percentage> 値 */
font-size: 80%;
/* math 値 */
font-size: math;
/* グローバル値 */
font-size: inherit;
font-size: initial;
font-size: revert;
font-size: revert-layer;
font-size: unset;
値
xx-small
,x-small
,small
,medium
,large
,x-large
,xx-large
,xxx-large
-
絶対的なサイズのキーワードで、ユーザーの既定のフォントサイズ (つまり
medium
) を基準としたものです。 larger
,smaller
-
相対的なサイズのキーワードです。フォントは親要素のフォントサイズから相対的に、上記の絶対的サイズのキーワードで使われている倍率におよそ沿う形で拡大または縮小されます。
<length>
-
正の
<length>
の値。 (em
やex
などの) フォント相対単位のほとんどは、親要素のフォントサイズに対する相対値です。(
rem
などの) ルートを基準としたフォント相対単位では、フォントサイズは<html>
(ルート)要素で使われているフォントのサイズからの相対値です。 <percentage>
-
正の
<percentage>
値で、親要素のフォントサイズからの相対値です。メモ: アクセシビリティを最大化するために、一般的に最適なのは、ユーザーの既定のフォントサイズからの相対値を使用することです。
math
-
math 要素の
font-size
プロパティの計算値を、親要素のfont-size
から相対的に決定する際に、変倍ルールが適用されます。 詳細は、math-depth プロパティを参照してください。
解説
フォントサイズの定義にはいくつかの方法があり、キーワードと数値 (ピクセルや em の場合) が使われます。個々のウェブページで必要とされるものにあわせて、最適な方法を選んでください。
キーワード
キーワードはウェブのフォントサイズを決める良い方法です。 <body>
要素のフォントサイズをキーワードで定義すると、ページのどこであってもフォントサイズを相対的に調整することができ、したがってページ全体のフォントサイズの拡大縮小が容易にできます。
ピクセル
ピクセル値 (px
) でフォントサイズを設定することは、ピクセル精度が必要な場合に適しています。ピクセル値は静的です。これは OS にもブラウザーにも依存しない方法であり、ブラウザーに文字を指定した高さのピクセルの数値で描画することを厳密に指示します。ブラウザーによって、同じ効果を得るのに異なるアルゴリズムが使われている可能性があるため、結果は多少異なるかもしれません。
フォントサイズの指定を組み合わせることもできます。例えば親要素のフォントサイズを 16px
、子要素を larger
とした場合、子要素のフォントサイズは親要素の 16px
より大きくレンダリングされます。
メモ:
フォントサイズを px
で定義すると、ブラウザーによってはユーザーがフォントサイズを変更することができないため、アクセシブルではありません。例えば、弱視の人は、ウェブデザイナーが選んだサイズより大きなフォントにしたがるかもしれません。こうした配慮のあるデザインをしたい場合は、フォントサイズにピクセルを使わないようにしてください。
em
em
の値を使用すると、動的または計算されたフォントサイズが作成されます (歴史的には、em
の単位は、ある書体の大文字の "M" の幅に由来していました)。この数値は、それが使われている要素の font-size
プロパティの乗数として機能します。この例を見てください。
p {
font-size: 2em;
}
この場合、<p>
要素のフォントサイズは、<p>
要素で継承されている font-size
の計算値の 2 倍になります。 すなわち、1em
の font-size
は、それが使われている要素の font-size
の計算値に等しくなります。
font-size
が <p>
の何れかの祖先に設定されていない場合、1em
はブラウザーの既定の font-size
と等しくなり、大抵は 16px
です。したがって、既定では 1em
が 16px
と同等であり、2em
は 32px
と同等です。もし font-size
が 20px と <body>
要素に設定されていれば、1em
は <p>
要素において 20px
となり、2em
は で 40px
と同等になります。
必要なピクセル値に相当する em は、次の式で計算することができます。
em = 要素に設定したい pixel 値 / 親要素のピクセル単位でのフォントサイズ
例えば、<body>
のフォントサイズが 16px
に設定されていたとします。使いたいフォントサイズが 12px であれば、 0.75em
を指定してください (12/16 = 0.75 だからです)。同様に、使いたいフォントサイズが 10px
なら、0.625em
を指定してください (10/16 = 0.625)。22px
ならば、1.375em
です (22/16)。
em
は、読者が使用するフォントに合わせて長さを自動的に調整するので、CSS では非常に便利な単位です。
em 値が複合的であるということは、覚えておくべき重要な事実です。以下の HTML と CSS をご覧ください。
html {
font-size: 100%;
}
span {
font-size: 1.6em;
}
<div>
<span>Outer <span>inner</span> outer</span>
</div>
結果は以下のようになります。
ブラウザーの既定の font-size
が 16px と仮定すると、単語 "outer" は 25.6px で描画されますが、単語 "inner" は 40.96px で描画されます。これは、内側の <span>
要素の font-size
は 1.6em ですが、これは親要素の font-size
からの相対値で、さらにその親要素の font-size
からの相対値になるからです。これはよく複合 (compounding) と呼ばれます。
rem
rem
値は、複合の問題を避けるために考案されました。 rem
値は親要素ではなく、ルート html
要素に対して相対的です。言い換えると、親要素のサイズの影響を受けることなく相対的な方法でフォントサイズを指定できますので、複合が発生しません。
以下の CSS は、先ほどの例とほぼ同じです。唯一の違いは、単位を rem
に変更したことです。
html {
font-size: 100%;
}
span {
font-size: 1.6rem;
}
この CSS を同じ HTML に適用すると、以下のようになります。
<span>Outer <span>inner</span> outer</span>
この例では、単語 "outer inner outer" はすべて 25.6px で表示されます(ブラウザーの font-size
は既定値が 16px のままであるとした場合)。
ex
em
の単位と同様に、ex
の単位を使用して設定された要素の font-size
は、計算または動的に行われます。全く同じように動作しますが、ex
の単位を使用して font-size
プロパティを設定する場合、font-size
はページで使用されている最初に利用可能なフォントの x-height に等しいことを除いては、同じように動作します。数値は、要素の継承された font-size
と font-size
の複合体を相対的に乗算します。
ex
などのフォントに関する長さの単位の詳細な説明はW3C Editor's Draftを参照してください。
公式定義
初期値 | medium |
---|---|
適用対象 | すべての要素とテキスト。 ::first-letter および::first-line にも適用されます。 |
継承 | あり |
パーセント値 | 親要素の font-size に対する相対値 |
計算値 | 指定通り。ただし相対的な長さはは絶対的な長さに変換される |
アニメーションの種類 | length |
形式定義
font-size =
<absolute-size> |
<relative-size> |
<length-percentage [0,∞]> |
math
<length-percentage> =
<length> |
<percentage>
例
フォントサイズの設定
CSS
.small {
font-size: xx-small;
}
.larger {
font-size: larger;
}
.point {
font-size: 24pt;
}
.percent {
font-size: 200%;
}
HTML
<h1 class="small">Small H1</h1>
<h1 class="larger">Larger H1</h1>
<h1 class="point">24 point H1</h1>
<h1 class="percent">200% H1</h1>
結果
仕様書
Specification |
---|
CSS Fonts Module Level 4 # font-size-prop |