レッスン 2

px、rem、em

デザイン引き渡し、コンポーネントスケーリング、ネストタイポグラフィに適切な単位を選びます。

この 3 つの単位はほぼすべてのフロントエンドコードベースに現れます。小さな例では互換に見えますが、実コンポーネントでは異なる挙動をします。

px:デザイン引き渡しのデフォルト

px は絶対 CSS 単位です。16px は親 font-size に関係なく 16 CSS ピクセルを意味します。

px を使うとき:

  • 固定ボーダー、シャドウ、ヘアライン区切りに合わせる
  • canvas、SVG ストローク幅、ピクセルパーフェクトアセットで作業
  • rem トークンがまだ定義されていない一回限りの仕様を変換

デザインシステムが rem ベースのスケーリングを期待する場合、すべてのタイポグラフィに px を使うのは避けてください。

rem:root 要素に相対

1rem は root 要素(html)の計算 font-size に等しく、通常デフォルトは 16px です。

html {
  font-size: 16px;
}

.title {
  font-size: 1.5rem; /* 24px */
}

rem を使うとき:

  • font-size、スペーシング、radius のデザイントークンを構築
  • プロジェクトが root font-size を変更したときサイズをスケールさせたい
  • 無関係なコンポーネント間で一貫した値が必要

em:現在要素の font-size に相対

1em は要素自身の計算 font-size(一部の継承ケースでは padding などは親)に等しいです。

.button {
  font-size: 1rem;
  padding: 0.75em 1.25em;
}

ここでは padding がボタン font-size に自動スケールします。

em を使うとき:

  • コンポーネント内でスペーシングがローカルタイポグラフィに従うべき
  • アイコンやバッジが近くのテキストとスケールすべき
  • 意図的にネストしたサイズ挙動が欲しい

クイック比較

単位最適注意点
pxボーダー、精密アセットroot 設定でスケールしない
remグローバルトークン、タイポグラフィ安定した root font-size を前提
emコンポーネント内部リズム深くネストしたテキストで複合

よくあるミス:文脈の混在

デザイナーが 20px の本文を渡す。CSS に 20px と書く。後でチームが rem 計算を楽にするため html { font-size: 62.5%; } に切り替え、px 値が rem トークンと揃わなくなる。

より良いワークフロー:px を rem に一度変換し、トークンを保存して再利用する。

要点

固定物理的詳細には px、システム全体トークンには rem、ローカルテキストに従うサイズには em を使います。

CSS Unit Converter / Clamp Generator でデザイン px を rem に変換し、値をコピーする前に root font-size をプロジェクトに合わせてください。

実践したいときは関連する DevCove ツールを使えます。任意であり、このレッスンの必須部分ではありません。

関連ツールを開く

コース概要へ戻る