本文へ移動

トップお知らせ・ブログCSSのvw・vh・rem・emの違い

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屋にご相談ください。

相談する

関連記事