CSSで文字サイズを可変にする!emとremの使い方を完全ガイド
生徒
「文字の大きさを決めるとき、いつもpx(ピクセル)を使っているのですが、スマホで見るとバランスが悪く感じることがあります。もっと良い方法はありますか?」
先生
「それは良いところに気づきましたね。pxは『絶対的なサイズ』なので、どんな画面でも同じ大きさになってしまいます。レスポンシブなサイトを作るなら、emやremといった『相対的なサイズ』を使うのがおすすめですよ。」
生徒
「エム……?レム……?難しい単語が出てきましたが、それを使うと何が変わるんですか?」
先生
「これらを使うと、基準となる文字サイズに合わせて、他の文字も自動で伸び縮みするようになるんです。まるで魔法のような仕組みを、詳しく解説していきますね!」
1. CSSの文字サイズ指定に欠かせない相対単位とは?
Webサイトで文字の大きさを指定する際、多くの初心者は「16px」や「20px」といった「px(ピクセル)」という単位を使います。pxは、パソコンの画面上の「点」を基準にした固定のサイズです。これを「絶対単位」と呼びます。しかし、最近のホームページ制作では、画面の大きさやブラウザの設定に合わせて柔軟に変化する「相対単位」を使うのが一般的です。
「相対単位」とは、何かの基準に対して「何倍にするか」を決める単位のことです。例えば、お父さんの身長を基準にして、子供の身長を「お父さんの0.8倍」と決めるようなイメージです。これを使うことで、基準となる文字サイズを変更するだけで、サイト全体の文字サイズをバランスよく一斉に変更できるようになります。その代表的な単位が、今回学習する「em(エム)」と「rem(レム)」です。
2. remを使ってルートを基準に文字を動かす
まず最初に覚えたいのが「rem(レム)」という単位です。これは「root em(ルート・エム)」の略です。「ルート」とは、Webページの一番根っこの部分、つまりブラウザそのものの設定やhtmlタグのことを指します。
ブラウザの標準的な文字サイズは通常「16px」に設定されています。このとき「1rem」は「16px」と同じ大きさになります。「2rem」ならその2倍の「32px」、「0.5rem」なら半分の「8px」です。remの素晴らしい点は、常に一番根っこのサイズだけを基準にするため、どこで使っても計算が狂いにくく、初心者の方でも扱いやすいという点にあります。パソコンの設定で文字を大きくしている人にも優しい、バリアフリーな設定が可能になります。
<style>
html {
font-size: 16px; /* これが基準(ルート)になります */
}
.text-large {
font-size: 2rem; /* 16px × 2 = 32px */
}
.text-small {
font-size: 0.8rem; /* 16px × 0.8 = 12.8px */
}
</style>
<p class="text-large">これは大きな文字(2rem)です</p>
<p class="text-small">これは少し小さな文字(0.8rem)です</p>
ブラウザ表示
3. emを使って親要素に連動させる方法
次に紹介するのが「em(エム)」です。これは、その文字が入っている「親の要素」の文字サイズを基準にする単位です。remが「常に全体の根っこ」を基準にするのに対し、emは「すぐ上の階層」を基準にするという違いがあります。
例えば、ある見出し(親)の中に小さな注釈(子)を入れる場合、親の文字サイズを大きくすれば、emで指定した子も自動的に連動して大きくなります。パーツごとにまとまったサイズ調整をしたい場合に非常に便利です。ただし、入れ子構造(箱の中に箱が入っている状態)が深くなると、計算が掛け算のように重なっていくため、慣れるまでは少し注意が必要です。まずは「身近な親分に従う単位」だと覚えておきましょう。
<style>
.parent-box {
font-size: 20px; /* 親のサイズ */
border: 1px solid #ccc;
padding: 10px;
}
.child-text {
font-size: 1.5em; /* 20px × 1.5 = 30px */
color: blue;
}
</style>
<div class="parent-box">
親要素(20px)
<p class="child-text">子要素(親の1.5倍の大きさ)</p>
</div>
ブラウザ表示
4. レスポンシブ対応を楽にする「魔法の1行」
メディアクエリを使って、スマホとパソコンで文字サイズを一気に切り替えたいとき、remの本領が発揮されます。htmlタグ(ルート)の文字サイズを、画面幅が狭いときは少し小さめに、広いときは大きめに設定するだけで、サイト内のすべてのrem指定が連動して変化します。
pxで一つひとつの場所を指定し直す必要はありません。根っこの数字を一つ変えるだけで、タイトルも本文もボタンの文字も、すべてが最適なバランスに自動調整されます。これが「可変テキストサイズ」の醍醐味です。パソコンをあまり触ったことがない方でも、この効率的な仕組みを一度体験すると、px指定には戻れなくなるほど便利ですよ。
<style>
/* 基本はスマホ向け(少し小さめ) */
html { font-size: 14px; }
/* 画面が広くなったら(パソコン向け)大きくする */
@media (min-width: 768px) {
html { font-size: 18px; }
}
.responsive-title {
font-size: 2rem; /* 画面幅によって 28px か 36px に自動で変わる */
color: green;
}
</style>
<h1 class="responsive-title">画面を広げると文字も大きくなるよ!</h1>
ブラウザ表示
5. pxとremの計算を簡単にするテクニック
「16pxが基準だといちいち計算するのが面倒……」と感じるかもしれません。そこで、プロの現場でも使われる裏技があります。それは、htmlタグの文字サイズを「62.5%」に設定する方法です。
ブラウザの標準「16px」の62.5%は、ちょうど「10px」になります。こうすると、「1.6rem = 16px」「2.0rem = 20px」といった具合に、私たちが使い慣れた10進数で直感的にサイズを決められるようになります。計算が苦手な方でも、これなら簡単にデザインを調整できますね。ちょっとした工夫で、プログラミングの難易度はぐっと下げることができるのです。
6. 余白の指定にもemやremを活用しよう
文字サイズだけでなく、余白(マージンやパディング)にもemやremを使うのが上級者への第一歩です。文字の大きさを変えたときに、余白だけがpxで固定されていると、文字と枠線の間隔がアンバランスに見えてしまいます。
余白にemを使うと、「文字の大きさに合わせた余白」が作れます。大きな文字には大きな余白、小さな文字には小さな余白が自動で設定されるため、デザインの統一感が一気に増します。これを「コンポーネント設計」と呼びますが、今はまだ難しい言葉は覚えなくて大丈夫です。まずは「文字と余白はセットで動かすと綺麗」という感覚を大切にしてください。
<style>
.flexible-button {
display: inline-block;
font-size: 1.5rem;
padding: 0.5em 1em; /* 文字サイズに応じた余白 */
background-color: #ff5722;
color: white;
text-decoration: none;
border-radius: 5px;
}
</style>
<a href="#" class="flexible-button">連動するボタン</a>
ブラウザ表示
7. アクセシビリティに配慮したサイト作り
相対単位を使う最大の理由は、実は「見る人への思いやり」にあります。高齢の方や目が疲れやすい方は、ブラウザの設定で文字サイズを大きくして閲覧しています。もし私たちがpxでガチガチにサイズを固定してしまうと、その人たちが設定を変えても文字が大きくならず、非常に不便な思いをさせてしまいます。
remを使って作られたサイトであれば、ユーザーの設定を尊重しつつ、レイアウトを保ったまま文字サイズが変わります。誰もが快適に情報を得られるサイトにすることを「アクセシビリティ」と言います。プログラミングの技術は、こうした優しさを形にするための道具でもあります。ぜひ、最初からremを使う癖をつけて、優しいWebサイト制作者を目指しましょう。
8. 実際にブラウザの設定を変えて確認してみよう
最後のアドバイスとして、自分で作ったページが正しく動いているか確認する方法をお伝えします。Google Chromeなどのブラウザの設定画面から「フォントサイズ」を「極大」や「極小」に変更してみてください。あなたの書いたコードがremやemで作られていれば、ページ全体の文字が設定通りに変化するはずです。
自分の書いたコードがユーザーの操作に反応して動く様子を見るのは、とても感動する体験です。最初は「0.1」の単位で迷うこともあるかもしれませんが、失敗を恐れずに色々な数値を試してみましょう。検証ツールを使ってリアルタイムに数字を書き換えるのも、理解を深める近道です。楽しみながら、自分だけの可変レイアウトを作り上げてください!
まとめ
今回の記事では、Webデザインの基本となる「文字サイズの指定方法」について、絶対単位のpx(ピクセル)と、相対単位であるrem(レム)やem(エム)の違いを詳しく解説してきました。現代のホームページ制作において、スマートフォンやタブレット、デスクトップPCといった多様なデバイスに対応する「レスポンシブデザイン」は避けて通れません。その中で、文字サイズを固定せず、環境に合わせて柔軟に変化させる技術は、プロの現場でも必須のスキルとなっています。
特に「rem」は、htmlタグという「ルート(根っこ)」のサイズを基準にするため、サイト全体の統一感を保ちながら一斉にサイズ調整ができる非常に強力な単位です。一方で「em」は、親要素のサイズに連動するため、特定のパーツ内での比率を保ちたい場合に最適です。これらを適切に使い分けることで、コードの記述量を減らし、メンテナンス性の高い美しいWebサイトを構築することが可能になります。
また、SEO(検索エンジン最適化)の観点からも、アクセシビリティに配慮したサイト設計は非常に重要視されています。ユーザーがブラウザの設定で文字を大きくした場合でも、レイアウトが崩れずに正しく情報が伝わるサイトは、検索エンジンからも「ユーザーフレンドリーな良質なコンテンツ」として高く評価される傾向にあります。
最後に、今回学んだ「rem」と「em」を組み合わせた、実戦的なカード型レイアウトのサンプルプログラムをご紹介します。文字サイズだけでなく、余白(padding)や角丸(border-radius)にも相対単位を取り入れることで、全体のバランスが自動で整う様子を確認してみましょう。
<style>
/* ルートの文字サイズを16pxに設定 */
html {
font-size: 16px;
}
/* 画面幅が広い場合の調整(レスポンシブ) */
@media (min-width: 768px) {
html {
font-size: 18px;
}
}
.summary-card {
background-color: #f8f9fa;
border: 2px solid #007bff;
border-radius: 0.5rem; /* ルート基準の角丸 */
padding: 1.5rem; /* ルート基準の余白 */
max-width: 400px;
margin: 20px auto;
font-family: sans-serif;
}
.summary-title {
font-size: 1.5rem; /* 16pxの1.5倍 = 24px */
margin-bottom: 1rem;
color: #007bff;
font-weight: bold;
}
.summary-description {
font-size: 1rem; /* 基準の16px */
line-height: 1.6;
color: #333;
}
.summary-badge {
display: inline-block;
background-color: #e2e3e5;
padding: 0.2em 0.8em; /* 文字サイズに連動する余白 */
font-size: 0.8em; /* 親の文字サイズの0.8倍 */
border-radius: 1em;
margin-top: 1rem;
font-weight: bold;
}
</style>
<div class="summary-card">
<div class="summary-title">
<i class="bi bi-check2-circle me-2"></i>学習のポイント
</div>
<p class="summary-description">
相対単位を活用することで、ユーザーの閲覧環境に合わせた最適な表示が可能になります。アクセシビリティを高めることは、信頼されるサイト作りの第一歩です。
</p>
<div class="summary-badge">CSS基礎</div>
<div class="summary-badge">レスポンシブ</div>
</div>
ブラウザ表示
生徒
「先生、今回の授業でpx(ピクセル)だけを使っていた自分を卒業できそうです!特にrem(レム)を使えば、htmlタグの数字を変えるだけでサイト全体の文字サイズが一気に変わるのが、まるで魔法みたいで驚きました。」
先生
「その感覚はとても大切ですよ。Web制作において効率化は最大の武器です。個別にpxで指定し直す手間が省けるだけでなく、ミスも減りますからね。em(エム)についても、何か発見はありましたか?」
生徒
「はい!emは『親分に従う単位』ですよね。ボタンの文字を大きくしたときに、その周りの余白も一緒に広がるように設定できるので、デザインが崩れにくくなると感じました。バッジやボタンのような小さな部品に使うと便利そうですね。」
先生
「素晴らしい理解です。さらに、アクセシビリティという言葉も学びましたね。私たちが作るWebサイトは、自分たちだけが見るものではありません。目の不自由な方や高齢の方、あるいは文字を大きくして読みたいという全てのユーザーに対して、等しく情報を届ける責任があるんです。」
生徒
「そうですね。pxでガチガチに固定してしまうと、ユーザーが文字サイズを変えたくても変えられないという不便さを生んでしまう。remを使うことは、単に便利なだけでなく、相手への優しさでもあるんだなと気づきました。」
先生
「その通りです。技術を磨くことは、誰かにとって使いやすい環境を作ることにも繋がります。最後に紹介した『62.5%の設定』のようなテクニックも使いながら、楽しく、そして思いやりのあるコードを書いていってください。次は色の指定についても学んでいきましょうか!」
生徒
「ありがとうございます!これからも色々な単位を使いこなして、誰にでも優しいオシャレなサイトを作れるように頑張ります!」
【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー
「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。
本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」と「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。
具体的なワークショップ内容と環境
【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。
【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。
この60分で得られる3つの技術資産
要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。
後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。
画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。
※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。
リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!
各回少人数・マンツーマン形式で徹底サポート
このセミナーの詳細・お申し込みはこちら