フォントサイズのあれこれ
2020-03-12
フォントサイズの指定については、色々と悩むところが多いものです。
px指定にするか、emで指定していくか、はたまた、%で指定するか…など。
それぞれについて、ざっと解説すると。
・px
一般的な指定単位で、pxでの絶対値での指定方法になります。
・em
親要素のフォントサイズに影響を受ける相対値の単位です。
親要素の指定が、16pxであれば、1em=16pxとなります。
・rem
親要素のフォントサイズではなく、htmlのフォントサイズが基準となる相対値の単位です。
・%
emと同じで、親要素のフォントサイズに依存します。
ビューポート単位(vw、vh、vmin、vmax)
ビューポートのに基づいて変化する指定方法です。
基準はビューポートの1/100なので、例えば、ビューポートが600pxの場合は6pxに、1000pxの場合は10pxに、vwの場合だと100vwは横幅いっぱいという事になります。
小さい画面では小さく、大きい画面では大きく見せれるので便利ではあるのものの、実際に設定したいpx数とかけ離れた数値になったりし、思いの外読みにくくなる事が多いので、他の指定方法と組み合わせたりして使う必要があります。
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
html{ font-size: 62.5%; } body{ font-size:1.6rem; /* 16px*/ line-height: 1.6; } h1{ font-size: 36px; /* IE8以下とAndroid4.3以下用補填 */ font-size: calc(3.0rem + ((1vw - 0.64rem) * 0.7895)); /* 30px~36pxで可変*/ } @media (min-width: 1200px) { /* 1200px以上*/ h1 { font-size: 3.6rem; /* 36px*/ } } @media screen and (max-width: 640px) {/* 640px以下*/ h1{ font-size: 3.0rem; /* 30px*/ } } |
まず、htmlに指定した62.5%は、ブラウザのデフォルトである16pxに対して62.5%とする事でhtml要素のフォントサイズを10pxに指定することになり、他の要素のfont-sizeの計算を簡単にする手法です。
たとえば、30pxにしたい時は3rem、16pxにしたい時は1.6remというように、pxを使わず設定することが可能です。
9行目の最初のフォントサイズの指定は、vwやcalc()が未対応の場合の補填です。
10行目のcalc()の部分ですが、30px – 36pxで可変になるという計算をしています。
そして、後半の割合の計算は、下記サイトを参考にしています。
ビューポートの幅の中でテキストを拡大/縮小する為のフォントサイズ計算
参考サイトでは、htmlの最初の設定がされていない状態なので、少しややこしく感じますが、見比べれば、使い方がわかってくると思います。
12行目からは、画面のサイズを大きくしていくと、ひたすら大きくしてしまいますので、1200px以上の場合は、36pxで固定としています。
17行目からは、640px以下の場合の指定になりますが、その時の文字数などで、調整する必要がなければ、不要かもしれませんが、参考までに。