CSSの単位がたくさんあり何を使えばよいか迷った時に、フォント、スペース、ポジション、要素の幅・高さに最適な単位は
Post on:2025年7月31日
sponsorsr
CSSには便利な単位がたくさんあります。よく使用する単位として絶対単位(px
など)や相対単位(em
, rem
, %
など)をはじめ、Gridの単位(fr
)やビューポート単位(vw
, vh
など)があります。いくつかの単位は使う場所が限られていますが、複数もしくはどこにでも使用できる単位もたくさんあります。
Webサイトやスマホアプリでフォントのサイズ、スペース、ポジション、FlexboxとGrid、要素の幅または高さに使用する場合、どのようにCSSの単位を選べばよいのかを紹介します。

What CSS length unit should you use?
- CSSの単位はどこでそれぞれ何を使えばよいか
- ポジショニング、ディテール・エフェクトに適したCSSの単位
- スペースに適したCSSの単位
- フォントサイズに適したCSSの単位
- FlexboxとGridに適したCSSの単位
- 要素の幅または高さに適したCSSの単位
CSSの単位はどこでそれぞれ何を使えばよいか
CSSの単位はそれぞれどこで使えばいいのかは、下記ページのフローチャートで質問に答えるだけで分かります。

What CSS length unit should you use?
以下は、そのフローの解説です。
フローの入り口は、下記のように分かれています。
- ポジショニング、ディテール・エフェクトに適したCSSの単位
- スペースに適したCSSの単位
- フォントサイズに適したCSSの単位
- FlexboxとGridに適したCSSの単位
- 要素の幅または高さに適したCSSの単位
ポジショニング、ディテール・エフェクトに適したCSSの単位
まずは、ポジショニング(top
, right
, bottom
, left
)、ディテール・エフェクト(border
, outline
, shadow
など)に適したCSSの単位から。

ポジショニング、ディテール・エフェクトに適したCSSの単位は、下記の通りです。
px
rem
ほとんどの場合、px
を使用します。px
であれば、細かい調整も簡単にできます。ただし、ほかの場所の単位にrem
を使用している場合は、一貫性を保つためにrem
を使い続けたほうがよいでしょう。好みに応じて、em
も使えます。
スペースに適したCSSの単位
スペース(margin
, padding
, gap
)に適したCSSの単位。

スペースに適したCSSの単位は、、下記の通りです。
px
,em
,rem
vw
/vh
,min()
,clamp()
段落間スペースには、em
とrem
が適しています。rem
が使用できる場合もありますが、em
を使用することで、テキストのフォントサイズに応じてスペースを調整できます。これにより全体的なフローがよくなります。
スペースをpadding
で確保する場合は、使用するケースによって異なります。まず、固定値が必要な場合はrem
かpx
を使用します。柔軟性の高い値が必要な場合は、em
が最適です。たとえば、ボタンにem
を使用し、フォントサイズを変更して小さいバージョンや大きいバージョンを作成すると、padding
が自動的に調整されます。
利用可能なスペースの量に応じてサイズを調整したい場合、たとえばスクリーンのサイズが大きい場合はpadding
を多くするなどの場合は、ビューポート単位(vw
/vh
)が使用できますが、通常はスペースが大きすぎたり小さすぎたりするのを避けるためにclamp()
でサイズを調整するのが最適です。
px
など、絶対単位について詳しくは、下記をご覧ください。

相対単位が主流の現在、絶対単位(px, in, mmなど)は特定のケースで非常に役立ちます
フォントサイズに適したCSSの単位
フォントサイズ(html
, body
, hx
, p
, a
, div
など)に適したCSSの単位。

rem
em
clamp()
cqi
lh
,ex
,cap
html
タグやbody
タグにfont-size
を定義する場合は、2通りです。レスポンシブにする必要がない場合は、rem
を使用します。使いやすく、予測可能で、そして非常に重要なポイントはユーザーの選択を尊重します。ユーザーがOSまたはブラウザでフォントのサイズを変更した場合でも、同じ効果が得られます。レスポンシブにする場合は、clamp()
を使用します。clamp()
関数には3つの値(最小値、推奨値、最大値)を設定します。

CSSの比較関数が便利すぎる! min(), max(), clamp()の使い方を詳しく解説
特定の要素(hn
, p
, ol
, ul
など)で異なるサイズを設定したい場合は、親要素のfont-size
を基準に相対的に定義したい場合は、em
を使用します。より正確な値を定義したい場合は、lh
, ex
, cap
を使用します。
これはインライン要素(a
, span
, strong
など)も同じです。
レイアウト要素(div
, nav
, main
, aside
, footer
ななど)に設定する場合は、html
タグやbody
タグの場合と同じです。
フォントに使用する単位について詳しくは、下記をご覧ください。

フォントに基づく相対単位(em, rem, cap, ch, ex, ic, lhなど)の便利な使い方を解説
FlexboxとGridに適したCSSの単位
FlexboxとGridに適したCSSの単位は主に、要素間のギャップ、グリッドの列・行、アイテムの幅に使用します。

px
,rem
fr
fr
,px
,rem
,auto
,min-content
max-width
,min-width
flex-grow
,flex-shrink
要素間のギャップに使用する場合は、固定サイズにはpx
, rem
, em
を使用し、流動的であればビューポート単位(vw
, vh
)やclamp()
が適しています。
グリッドの列・行に使用する場合は、固定サイズにはpx
でおそらく問題はありませんが、他でrem
を使用しているのであれば一貫性を保つためにrem
がお勧めです。
流体サイズにはfr
です。fr
単位は残りのスペースを使用します。たとえば、幅が1fr
の列が3つある場合、列は利用可能なスペースに合わせて調整され、すべて同じ幅になります。また、%
も機能しますが、ギャップを考慮しないとオーバーフローが発生する可能性があります。fr
ではその問題を回避できます。
場所によって固定と流体が混在する場合は、流動的なものは利用可能なスペースを占めるためfr
を使用します。特定の列や行のコンテンツのサイズに一致させたい場合はauto
またはmin-content
を使用します。固定サイズが必要な場合はpx
またはrem
を使用して設定します。
flexアイテムはサイズ設定が難しい場合がありますが、それがflexboxを使用する目的であり、柔軟性が求められます。要素が特定のサイズより大きくなるのを防ぎたい場合は、max-width
にpx
, rem
を使用します。flexアイテムはデフォルトでは拡大しません。そのため、通常flexアイテムでflex-grow
を0
にした場合にのみ、この設定が必要になります。max-width
を使用すると、そのサイズを超えて拡大することはありません。
逆に要素が特定のサイズより小さくなるのを防ぎたい場合は、min-width
にpx
, rem
を使用します。
要素を特定のサイズにしたい場合は、つまりflexアイテムを縮小または拡大したくない場合は、flex-grow
とflex-shrink
の両方を0
にします。そして、width
やflex-basis
を設定するだけでそのサイズに合わせることができます。
auto
について詳しくは、下記をご覧ください。

CSSのプロパティの値に「auto」を使ったテクニックのまとめ、マージンやサイズや配置やFlexboxなど
要素の幅または高さに適したCSSの単位
要素の幅または高さに適したCSSの単位は、使用するケースによってさまざまな単位を使用します。

px
,rem
,%
,ch
vw
vh
,svh
,dvh
,lvh
cqi
まずは、要素の幅から。幅にはwidth
, min-width
, max-width
の3つのプロパティを使用します。
max-width
に使用する単位は、px
で問題ないです。ただし、他の場所でrem
を使用している場合は、一貫性を保つためにrem
を使用します。また、ch
は約1文字分の幅に相当する単位で、行の長さの最大幅を簡単に設定できるため、非常に便利です。
width
とmin-width
に使用する単位の考え方は同じです。ます、その要素に幅指定が本当に必要か確認してください。よくある間違いの一つは、幅が必要ないのに幅を宣言してしまうことです。固定幅に使用する場合はpx
, rem
です。他の要素の幅を基準に幅を設定する場合は、%
およびcqi
を使用します。ビューポートに対して相対的に幅を設定する場合は、ビューポート単位(vw
)を使用します。
cqi
など、コンテナクエリに関する単位について詳しくは、下記をご覧ください。

コンテナクエリに基づく相対単位(cqw, cqh, cqi, cqb, cqmin, cqmaxなど)の便利な使い方を解説
続いて、要素の高さ。高さにはheight
, min-height
, max-height
の3つのプロパティを使用します。
固定高さに使用する単位は、px
, rem
です。他の要素の高さを基準に設定する場合は、%
です。しかし、その基準にする要素の高さも宣言する必要があるため、これは難しい場合があります。
ビューポートに対して相対的に幅を設定する場合は、ビューポート単位(vh
, svh
, dvh
, lvh
)を使用します。
ビューポート単位について詳しくは、下記をご覧ください。

sponsors