【CSS】今更ながらremの基準、どっちが正解?「1rem=10px」と「1rem=16px」を徹底比較!
Webサイトのコーディングで欠かせないCSSの単位。その中でも、レスポンシブデザインやアクセシビリティの観点から「rem
」は非常に重要な単位です。
しかし、このrem
を使う上で、Web開発者の間でも意見が分かれる一つのテーマがあります。それが、「ルートのフォントサイズをどう設定するか?」という問題です。
具体的には、
1rem = 10px
になるように設定する派- ブラウザのデフォルトである
1rem = 16px
のまま使う派
の2つの考え方です。
「計算が楽だから10px
が良い」「いや、アクセシビリティを考えるなら16px
のままだ」といった声が聞こえてきます。
この記事では、この2つのアプローチを徹底比較!それぞれのメリット・デメリットを解説し、2025年現在、どちらの方法がベストプラクティスとされているのかを明らかにします。
「1rem = 10px」派の主張と実装方法
まずは、計算が楽になると言われる「1rem = 10px
」にする方法です。
どうやって設定するの?
多くのブラウザのデフォルトフォントサイズは16px
です。これを10px
にするために、html
要素に以下のCSSを記述します。
html {
/* 16px の 62.5% = 10px */
font-size: 62.5%;
}
たったこれだけで、1rem
が10px
として扱われるようになります。
メリット:開発者にとって計算が圧倒的に楽!
この方法の最大のメリットは、開発時の計算が非常に直感的になることです。
12px
にしたければ →1.2rem
18px
にしたければ →1.8rem
24px
にしたければ →2.4rem
このように、px
の値を10で割るだけなので、デザインカンプから数値を拾う際に、頭の中で瞬時に変換できます。開発効率が上がる、というのがこの手法の大きな魅力です。
「1rem = 16px」派の主張と実装方法
次に、ブラウザのデフォルト設定を尊重する「1rem = 16px
」のまま使うアプローチです。
どうやって設定するの?
何もしません。
html
要素のfont-size
を敢えて指定せず、ブラウザの標準設定に任せます。これにより、1rem
はブラウザのデフォルトである16px
を基準とします。
メリット:ユーザーのアクセシビリティを最大限に尊重できる
こちらのメリットは、何と言ってもアクセシビリティの向上です。この点については、次のセクションで詳しく解説します。
【結論】推奨は「1rem = 16px」!ユーザー視点で考えてみよう
計算が楽な「10px」設定は魅力的ですが、現在のWeb制作では「1rem = 16px
」のまま使うことが強く推奨されています。
なぜなら、この選択は「誰のためのWebサイトなのか?」という根本的な問いに繋がるからです。ここで、具体的なシナリオを想像してみましょう。
シナリオ1:「1rem = 10px」設定のサイトで起こること
- ユーザーの状況
あるユーザーが、文字を読みやすくするために、お使いのブラウザの基本の文字サイズを「大(20px)」に設定したとします。 - サイトの表示
そのユーザーが「html { font-size: 62.5% }
」が設定されたサイトを訪れると、サイトはユーザーの「20px」という設定を上書きし、20px * 0.625 = 12.5px
というサイズを基準にしてしまいます。 - 結果
ユーザーは文字を大きくしたかったにも関わらず、意図に反して通常よりも小さな文字で表示されてしまいます。これは、開発者の都合のためにユーザーの体験を損なってしまう、アクセシビリティ上、非常に大きな問題です。
シナリオ2:「1rem = 16px」設定のサイトで起こること
- ユーザーの状況
先ほどと同じ、ブラウザの文字サイズを「大(20px)」に設定したユーザーです。 - サイトの表示
今度は、html
のfont-size
を特に設定していない(デフォルトのままの)サイトを訪れます。サイトはユーザーの設定を尊重し、「20px」を1rem
の基準とします。 - 結果
サイト全体の文字サイズや余白が、ユーザーの希望通りに1.25倍
(20px / 16px)に拡大されます。ユーザーは自分が一番見やすい環境で、快適にサイトを閲覧することができます。
まとめ:誰のための選択か?
1rem = 10px設定 | 1rem = 16px設定 (デフォルト) | |
---|---|---|
開発者 | 計算が楽 | 計算に一手間(ただしツールで解決可能) |
ユーザー | 設定が無視され、読みにくくなる可能性がある | 設定が尊重され、読みやすい |
この比較から分かる通り、「10px」設定は開発者だけが楽になる一方、「16px」設定はユーザーと開発者の両方にとって良い結果をもたらします。
「でも、16px基準だと計算が面倒…」という問題は、Sass(SCSS)の関数や、エディタの拡張機能を使えば簡単に解決できます。
Sass(SCSS)の関数を使った解決例
// pxをremに変換する便利な関数
@function rem($pixels, $base: 16) {
@return #{$pixels / $base}rem;
}
// 使いたい場所でpxの値を渡すだけ!
.title {
font-size: rem(24); // → 1.5rem に自動で変換
}
Webサイトは、さまざまな環境の、さまざまな人が訪れる場所です。開発者の一時的な「楽さ」よりも、すべてのユーザーにとっての「使いやすさ」を優先することが、より良いWebサイト作りの第一歩です。
これからのWeb制作では、ぜひブラウザのデフォルトを尊重した「1rem = 16px
」基準で、アクセシブルなコーディングを心がけてみてください!