CSSのvw・vh・rem・emの違いとは?
CSSで大きさを指定するとき、px のほかに、vw・vh・rem・em などの単位があります。
どれを使えばよいのか迷う方も多いと思います。
この記事では、それぞれの単位の違いと、使い分けの考え方を解説します。
1.違いは「何を基準にした大きさか」
| 単位 | 基準 | 向いている場面 |
|---|---|---|
| px | 画面の点の大きさ(決まった大きさ) | 線の太さ、細かな位置合わせ |
| rem | ページ全体(html)の文字の大きさ | 文字の大きさ、余白 |
| em | その要素の文字の大きさ | 文字の大きさに合わせたい余白やアイコン |
| vw | 画面の幅(1vw = 幅の1%) | 画面の幅に合わせて変えたい大きさ |
| vh | 画面の高さ(1vh = 高さの1%) | 画面いっぱいの高さの箱 |
多くのブラウザでは、初めの設定で html の文字の大きさが16pxなので、1rem = 16px になります。
2.単位を使い分ける理由
px は決まった大きさなので、見る人がブラウザの文字の大きさを大きくする設定にしていても、変わらないことがあります。rem で文字の大きさを指定しておくと、見る人の設定に合わせて、文字が大きくなります。
また、vw や vh を使うと、画面の大きさに合わせて伸び縮みする大きさを指定できます。ただし、文字の大きさを vw だけで決めると、スマートフォンで小さくなりすぎたり、パソコンで大きくなりすぎたりします。
文字の大きさは rem、画面に合わせたい大きさは vw・vh、細かな線や位置は px、と使い分けるのが基本です。
3.書き方の例と注意点
文字の大きさは rem
body {
font-size: 1rem; /* 16px */
}
h2 {
font-size: 1.5rem; /* 24px */
}
em は、親の文字の大きさに合わせて変わる
.button {
font-size: 1rem;
padding: 0.5em 1em; /* 文字の大きさに合わせて余白も変わる */
}
em は、要素が入れ子になると、大きさが重なって計算されるため、思ったより大きく(小さく)なることがあります。迷ったら rem を使うと分かりやすくなります。
vw と clamp() を組み合わせる
h1 {
font-size: clamp(1.5rem, 4vw, 2.5rem);
}
clamp() を使うと、「最小 1.5rem、画面の幅に合わせて変わり、最大 2.5rem」のように、大きさの範囲を決められます。
スマートフォンでの vh の注意
スマートフォンでは、ブラウザのアドレスバーが出たり隠れたりするため、100vh が画面より大きくなることがあります。今のブラウザでは、表示されている部分の高さを表す dvh などの単位も使えます。
4.よくある質問
px を使ってはいけませんか?
使ってかまいません。線の太さや、細かな位置合わせなど、決まった大きさがよい場面では px が向いています。
rem と em は、どちらを使えばよいですか?
迷ったら rem がおすすめです。ページ全体の文字の大きさを基準にするため、計算が分かりやすくなります。
% と vw は、何が違いますか?
% は親の箱の大きさが基準、vw は画面の幅が基準です。
1rem を 10px にする書き方を見かけます。
html の文字の大きさを 62.5% にして、1rem = 10px にする方法です。計算は楽になりますが、ほかの部分で文字の大きさを指定し直す必要があります。
5.まとめ
CSSの単位は、何を基準にした大きさかで使い分けます。
- rem はページ全体の文字の大きさ、em はその要素の文字の大きさが基準
- vw・vh は画面の幅・高さが基準
- 文字の大きさは rem、範囲を決めるなら clamp() と組み合わせる
- スマートフォンの 100vh には注意する
画面の幅に合わせてデザインを切り替える方法は、CSSのメディアクエリとは?で解説しています。
CSSの指定や、表示の崩れで困っている場合は、浅草Web屋にご相談ください。