CSS 長さの単位(px/em/rem/%/vw/vh)

目次

長さの単位の違いのまとめ

単位 基準 特徴
px 画面のドット 固定サイズ
em 親要素のフォントサイズ 継承されて変化する
rem <html>要素(ルート)のフォントサイズ どこでも共通の基準
% 親要素のサイズに対する割合 ボックスの幅(width)や高さの指定
vw 表示領域(画面)の幅 1vw = 画面幅の1%
vh 表示領域(画面)の高さ 1vh = 画面高さの1%

px(ピクセル)

  #p1 {
    font-size: 16px;
  }

ディスプレイは物理ピクセルの集まりでできています。

解像度が1920×1080の場合、横に1920個、縦に1080個の物理ピクセルがあります。

CSSで使われるpxは物理ピクセルそのものではなく、表示上の大きさを一定に保つためのCSSピクセル(論理ピクセル)です。

そのため、高解像度ディスプレイではCSSの1pxが複数の物理ピクセルで描画されることがあります。

同じ物理サイズのディスプレイであれば、解像度が低いほど1物理ピクセルは大きくなります。

→1920*1080の1ピクセルと1024×768の1ピクセルは、1024×768の方が大きい

em(エム)

①font-sizeに使う場合

親要素のfont-sizeが基準になります。

  body {
    font-size: 16px;
  }
   div {
    font-size: 1.5em;  /* 16 × 1.5 = 24px */
  }

1.5emで1.5倍にします。

 

②それ以外(margin/padding/widthなど)

自分自身のfont-sizeが基準になります。

div {
  font-size: 20px;
  padding: 1em;  /* 20px */
}

 

ネストすると文字が巨大化するので注意が必要です。

親:20px
子:20×1.2em=24px
孫:24×1.2em=28.8px

 

使うポイント

①文字の大きさに連動させたい「余白」

ボタンのデザインで文字を大きくしたときに、ボタン内の余白(padding)も自動で広がってほしい時

.button {
  font-size: 1.2rem; /* 基本サイズ */
  padding: 0.5em 1em; /* 文字の半分を上下に、1文字分を左右に */
}

② 文章内の小さな装飾

見出しの横にある小さなアイコンや、行間(line-height)の設定など、文字の高さと常にセットで考えたい時

rem(レム)

常にhtml要素のfont-sizeを基準にする相対単位です。

html {
  font-size: 16px;
}
p {
  font-size: 1.5rem; /* 24px */
}

1.5remで1.5倍にします。
emと違いネストしても基準は変わりません。予測でき調整しやすいです。

%(パーセント)

.parent {
  width: 400px;
  border: 2px solid #333;
}
.child {
  width: 50%; /* 400px * 50% = 200px */
  background: #8fd3f4;
}

6行目のwidthの%は、2行目の親のwidthが基準になります。

vw(ブイダブリュ)

Viewport Width(ビューポート・ウィズ)の略です。
親ではなく画面基準になります。

.box {
  width: 50vw;
  height: 100px;
  background: #8fd3f4;
}

画面幅が1000pxで50vwを指定した時 = 500pxになる

1vw = 画面幅の1%

ブラウザ幅を変えると 自動で伸び縮みします。

vh(ブイエイチ)

Viewport Height(ビューポート・ハイト)の略です。
親ではなく画面基準になります。

.box {
  width: 200px;
  height: 50vh;
  background: #ffd6a5;
}

画面高さが800pxで50vhを指定した時 = 400px

高さが常に画面の半分になります。

1vh = 画面高さの1%

関連の記事

CSSを記述する場所 (外部CSS,内部CSS,インラインCSS)
CSS セレクタの優先順位 (!important)

△上に戻る