AI先生のロボットキャラクター
第1章 - セクション7

幅と高さの指定方法

width・height の指定と px・%・auto の使い分け、レスポンシブ対応の考え方

男子生徒のアイコン

先生、要素のサイズって変えられるんですか?ボタンを大きくしたり、画像のサイズを調整したりできるんでしょうか?

AI先生のアイコン

もちろんできるよ!CSSのwidth(幅)とheight(高さ)というプロパティを使って、要素のサイズを自由に調整できるんだ。これがWebページレイアウトの基本中の基本なんだよ。

女子生徒のアイコン

単位も色々あるって聞いたことがあります。ピクセル以外にも、パーセントとかがあるんですよね?

AI先生のアイコン

そうだね。px(ピクセル)、%(パーセント)、auto(自動)など、それぞれに特徴があるんだ。特に現代では、様々な画面サイズに対応する「レスポンシブデザイン」が重要だから、単位の選択はとても大切なんだよ。今日はwidth と height の基本から、実践的な使い方まで学んでいこう!

基本概念の理解(width と height)

女子生徒のアイコン

width と height って、具体的にはどんな風に使うんですか?

AI先生のアイコン

実際にコードを見ながら理解していこう。width は要素の幅、height は要素の高さを指定するプロパティなんだ。これらを使うことで、要素を思い通りのサイズに調整できるようになるよ。

なぜサイズ指定が重要なのか

Web制作において、要素のサイズを適切に制御することは、美しく使いやすいWebページを作るために不可欠です。サイズ指定が与える影響を理解することで、より効果的なWebデザインができるようになります。

サイズ指定が与える効果
レイアウト制御
要素を適切な大きさに調整して、バランスの取れた配置を実現
ユーザビリティ
ボタンやリンクを押しやすいサイズに調整して操作性を向上
レスポンシブ対応
様々な画面サイズに適応するデザインの基盤
コンテンツ強調
重要な情報を際立たせ、視線誘導を効果的に行う

CSSでサイズを指定する基本の方法

CSSで要素のサイズを制御する際に最も基本となるのが、幅を指定するwidth高さを指定するheightの2つのプロパティです。これらを使うことで、要素の表示領域を細かく調整できます。

width(幅)プロパティ

要素の幅を指定するプロパティです。レイアウトの基本となる重要な設定で、コンテンツの表示領域を決める要素の一つです。

基本的な書き方
セレクター {
    width: サイズの値;
}

サイズの値は以下の方法で指定できます。

  • ピクセル値 200px300pxなど固定サイズ
  • パーセント値 50%80%など親要素に対する割合
  • auto ブラウザが自動的にサイズを決定(初期値)
  • その他の単位 emremvwなど(後で詳しく学習)
実際のコード例
/* ピクセル値で固定幅を指定 */
.fixed-box {
    width: 200px;             /* 200ピクセル固定 */
    background-color: lightblue;
}

/* パーセント値で相対的な幅を指定 */
.relative-box {
    width: 80%;               /* 親要素の80%の幅 */
    background-color: lightgreen;
}

height(高さ)プロパティ

要素の高さを指定するプロパティです。縦方向のレイアウトを制御し、要素の視覚的な存在感を調整するのに使用します。

基本的な書き方
セレクター {
    height: サイズの値;
}

heightでも、widthと同様の方法でサイズを指定できます。ただし、heightはコンテンツの量に応じて自動的に調整されることが多いため、固定値を使う場合は注意が必要です。

実際のコード例
/* 固定高さを指定 */
.header {
    height: 80px;             /* 80ピクセル固定 */
    background-color: navy;
}

/* 自動調整(推奨) */
.content {
    height: auto;             /* 内容に応じて自動調整 */
    background-color: #f5f5f5;
}

実際の動作を確認してみよう

理論だけでなく、実際にコードを動かして width と height の効果を確認してみましょう。

CSSコード:
プレビュー:
  • コードを編集して数値を変更すると、リアルタイムで変化を確認できます

要素の種類による width・height の効き方

HTMLの要素には、ブロック要素インライン要素という2つの基本的な表示タイプがあり、width と height の効き方が異なります。さらにインラインブロック要素という中間的なタイプも存在します。これらの違いを見ていきましょう。

男子生徒のアイコン

ブロック要素とインライン要素って何ですか?聞いたことはあるんですが、よくわからなくて…

AI先生のアイコン

そうだなぁ。簡単に言うと、ブロック要素は「箱のように四角い領域を持つ要素」で、インライン要素は「文章の中に組み込まれる要素」なんだ。実際に見てみると理解しやすいよ。

ブロック要素とインライン要素の特徴

ブロック要素
display: block
縦に積み重なり、横幅いっぱいに広がる
width・height の指定
✓ 効く
インライン要素
display: inline
横に並び、内容分だけのサイズになる
width・height の指定
✗ 効かない
インラインブロック要素
display: inline-block
横に並び、サイズを自由に指定できる
width・height の指定
✓ 効く

各要素タイプの特徴まとめ

3つの要素タイプの特徴を一覧で確認してみましょう。

要素タイプ幅・高さの指定主な特徴代表的な要素
ブロック要素 効く横幅いっぱいに広がり、縦に積み重なる。divpタグなど
インライン要素 効かない内容分だけのサイズで、横に並ぶ。spanaタグなど
インラインブロック要素 効くサイズ指定可能で、横に並ぶ。buttoninputタグなど

実際の動作比較

ブロック要素、インライン要素、そしてインラインブロック要素で、width と height の効き方がどう違うかを実際に確認してみましょう。

CSSコード:
プレビュー:
女子生徒のアイコン

要素の種類によって width・height の効き方が違うなんて知りませんでした!

AI先生のアイコン

そうなんだ。ブロック要素は自由にサイズ指定できるけど、インライン要素は内容に応じたサイズになる。そしてインラインブロック要素は、両方の良いところを併せ持っているんだね。

男子生徒のアイコン

つまり、サイズを指定したい場合は、要素がブロック要素かインラインブロック要素である必要があるということですね?

AI先生のアイコン

その通り!もしインライン要素のサイズを変更したい場合は、CSSで display: inline-blockdisplay: block に変更することもできるんだ。要素の表示タイプは変更可能なんだよ。

単位の基本

男子生徒のアイコン

さっきから px とか % とか出てきましたが、どう使い分けるんですか?

AI先生のアイコン

いい質問だね!単位の選択は、デザインの意図や使用場面によって決まるんだ。固定サイズにしたいのか、画面サイズに応じて変化させたいのかで変わってくるよ。

固定サイズ vs 可変サイズの考え方

CSSの単位は大きく固定サイズ可変サイズに分けられます。どちらを選ぶかで、Webページの表示が大きく変わります。

単位の分類と特徴
固定サイズ(絶対単位)
主な単位:
px
画面サイズに関係なく常に同じサイズ
適用場面:
• 細かい装飾
• アイコンサイズ
• ボーダーの太さ
可変サイズ(相対単位)
主な単位:
rem % vw vh auto
親要素や画面サイズに応じて変化
適用場面:
• レスポンシブデザイン
• レイアウト制御
• コンテンツエリア

固定サイズ単位の詳細

画面サイズに関係なく、常に同じサイズで表示される単位です。

px(ピクセル)- Web制作の基本単位

pxは画面上の1ピクセルを表す単位で、最も直感的で理解しやすい固定単位です。デバイスの解像度に依存せず、常に同じ物理サイズを持ちます。

  • 特徴 画面サイズに関係なく常に同じサイズ
  • 使用場面 ボーダーの太さ、アイコンサイズ、細かい装飾
  • メリット 正確なサイズ指定、計算が簡単
  • デメリット レスポンシブデザインには制限的
.button {
    width: 120px;      /* 常に120ピクセル幅 */
    height: 40px;      /* 常に40ピクセル高 */
    border: 2px solid blue;  /* 2ピクセルのボーダー */
}

可変サイズ単位の詳細

親要素や画面サイズに応じて、動的にサイズが変化する単位です。現代のレスポンシブデザインの基礎となります。

rem(ルート基準)- フォントサイズ基準の相対サイズ

rem(root em)は、ルート要素(html要素)のフォントサイズを基準とした単位で、現代Web開発で最も重要な単位の一つです。

基準サイズ: 16px (ブラウザの標準フォントサイズ)
すべてのrem値は、この16pxを基準に計算されます
0.5rem = 8px
16px × 0.5
1rem = 16px
16px × 1
1.5rem = 24px
16px × 1.5
2rem = 32px
16px × 2
ルートフォントサイズが変わると、rem指定の要素もすべて比例して変化します
  • 特徴 ルートフォントサイズ(通常16px)を基準とした倍数
  • 計算 1rem = ルートフォントサイズ × 1(例:16px × 1 = 16px)
  • 使用場面 フォントサイズ、マージン、パディング、レスポンシブデザイン
  • メリット アクセシビリティ対応、統一感のあるスケーリング
.heading {
    font-size: 2rem;    /* 32px(16px × 2) */
    margin-bottom: 1rem; /* 16px(16px × 1) */
}

.container {
    padding: 1.5rem;    /* 24px(16px × 1.5) */
}
ルートフォントサイズの変更方法

ルートフォントサイズ(通常16px)は変更することができます。

  • CSSでの変更 html { font-size: 20px; } でサイト全体の基準を20pxに変更
  • ユーザー設定 ブラウザの設定やアクセシビリティ機能で変更可能
  • 自動連動 ルートサイズが変わると、すべてのrem指定要素が比例して変化
  • アクセシビリティ 視覚に困難のあるユーザーの設定変更に自動対応

これがremを使う大きなメリットで、現代のWeb開発で推奨される理由です。

emについて

emとは、親要素のフォントサイズを基準とした相対単位です。remはルート要素のフォントサイズを基準にするのに対し、emは親要素のフォントサイズを基準にします。

  • em 親要素が20pxなら、1em = 20px(親要素に依存して変化)
  • rem 常にルートサイズ基準、1rem = 16px(一貫性あり)

通常、remの方が一貫性があり、管理しやすいため多くのプロジェクトで利用されています。

%(パーセント)- 親要素基準の相対サイズ

%は親要素のサイズに対する割合を表す単位で、レスポンシブデザインの基本となります。例えば、親要素の幅が1000pxの場合、50%は500pxになります。

親要素 (width: 1000px)
25% = 250px
width: 25%
50% = 500px
width: 50%
75% = 750px
width: 75%
0px 250px 500px 750px 1000px
親要素のサイズが変わると、パーセント指定の子要素も自動的にサイズが変化します
  • 特徴 親要素のサイズに対する割合で計算
  • 使用場面 レイアウトの分割、親要素に応じたサイズ調整
  • メリット 親要素の変化に自動追従、柔軟なレイアウト
  • 注意点 親要素にサイズが設定されていないと計算できない
.sidebar {
    width: 25%;        /* 親要素の25%の幅 */
}

.main-content {
    width: 75%;        /* 親要素の75%の幅 */
}
box-sizing: border-box の活用

現代のWeb開発では、直感的なサイズ計算のために box-sizing: border-box がよく使われます。


box-sizing: border-boxとは、要素の widthheightpaddingborder を含める設定です。これにより、指定したサイズ内に余白と枠線が収まるため、レイアウトが崩れにくくなります。

男子生徒のアイコン

width: 100% にしたら、要素が親からはみ出してしまったんですが…

AI先生のアイコン

それはよくある問題だね。CSSでは width に加えて padding(内側の余白)や border(枠線)も要素の実際のサイズに影響するんだ。これを理解しておくと、レイアウトがうまくいくよ。

/* 親要素 */
.container {
  width: 500px;
  background: lightgray;
  padding: 1rem;
}

.box-default {
  width: 100%;  /* 親要素の幅いっぱい */
  padding: 20px;
  border: 3px solid darkblue;
  /* 実際のサイズ: 100%(500px) + 40px (paddingの左と右) + 6px (borderの左と右) = 546px */
}

/* 直感的な計算方法 */
.box-borderbox {
  width: 100%;  /* 親要素の幅いっぱい */
  padding: 20px;
  border: 3px solid darkblue;
  box-sizing: border-box;  /* これで収まる */
  /* 実際のサイズ: 100% 内に padding と border が含まれる */
}


/* プロジェクト全体に適用する一般的な設定 */
* {
  box-sizing: border-box;
}

対応するHTML:

<div class="container">
  <div class="box-default">box-default クラス: デフォルト(はみ 出す)</div>
  <div class="box-borderbox">box-borderbox クラス: border-box(収まる)</div>
</div>
プレビュー:

vw・vh(ビューポート単位)- 画面サイズ基準の相対サイズ

vw(viewport width)とvh(viewport height)は、ブラウザの表示領域(ビューポート)に対する割合を表します。viewportの幅や高さに応じて、要素のサイズが変化します。

ビューポート単位の仕組み
ブラウザの表示領域を基準とした相対単位
ビューポート(ブラウザ表示領域)
vw(横幅基準)
ビューポート幅の1% = 1vw(画面幅1000pxなら1vw=10px)
50vw
ビューポート幅の50%
25vw
ビューポート幅の25%
vh(高さ基準)
ビューポート高さの1% = 1vh(画面高さ800pxなら1vh=8px)
60vh
高さ60%
40vh
高さ40%
20vh
高さ20%
ビューポート単位の特徴
画面サイズが変わると、vw・vh指定の要素も
自動的にサイズが変化します
  • 特徴 画面サイズに直接連動して変化
  • vw ビューポート幅の1%(100vw = 画面幅100%)
  • vh ビューポート高さの1%(100vh = 画面高さ100%)
  • 使用場面 ヒーローセクション、フルスクリーン要素、レスポンシブタイポグラフィ
.hero-section {
    width: 100vw;      /* 画面幅いっぱい */
    height: 100vh;     /* 画面高さいっぱい */
}

.half-screen {
    width: 50vw;       /* 画面幅の半分 */
}

auto(自動)- ブラウザ計算による動的サイズ

autoは数値ではなく、ブラウザが自動的にサイズを計算する特別な値です。width と height の初期値で、最も重要な概念の一つです。

auto値の動作パターン
ブラウザが要素タイプと内容に応じて自動計算
親要素(width: 600px)
ブロック要素の width: auto
親要素いっぱいに広がる(600px)
→ 親要素の横幅100%を自動取得
ブロック要素の height: auto
少ないテキスト
長いテキストが
複数行になった
場合
→ コンテンツ量に応じて高さが自動調整
インライン要素の width・height: auto
この短いspanとても長いspanテキストは 内容のサイズに合わせて自動調整されます。
→ テキスト量ぴったりのサイズに自動調整
autoの特徴
ブラウザが要素タイプ(ブロック・インライン)と内容量を考慮して
最適なサイズを自動的に計算・適用
  • ブロック要素のwidth: auto 親要素の横幅いっぱいに広がる
  • ブロック要素のheight: auto 内容に応じて高さが自動調整される
  • インライン要素のwidth・height: auto 内容のサイズに依存(テキスト量にぴったり)
    ※width・heightプロパティは効かない
.flexible-box {
    display: block; /* ブロック要素 */
    width: auto;    /* 親要素いっぱいに広がる */
    height: auto;   /* 内容に応じて調整される */
}

実際の単位比較

様々な単位がどのように動作するかを実際に確認してみましょう。

  • プレビューの幅を変更して、各要素のサイズ変化を確認してみてください。
CSSコード:
プレビュー:
単位選択の基本ガイドライン

Web制作における単位選択の基本的な考え方をまとめます。

  • px 細かい装飾、ボーダー、アイコンサイズなど精密な制御が必要な場合
  • rem フォントサイズに対する相対単位、テキストの可読性向上
  • % 親要素に対する相対的なサイズ指定、レイアウトの分割
  • vw・vh 画面サイズに応じたフルスクリーン要素、ヒーローセクション
  • auto ブラウザによる自動サイズ決定、特にheightで推奨

次のセクションでは、これらの単位を使った実践的なテクニックを学習します。

実践的なテクニック

男子生徒のアイコン

色々な単位があるのは分かったんですが、実際にどう使い分ければいいんでしょうか?

AI先生のアイコン

まずは基本的なガイドラインを押さえた上で、具体的なシナリオに応じて適切な単位を選ぶことが大切だよ。次に、いくつかの実践的な例を見てみよう。

max-width と min-width の活用

max-width - 横幅の上限を設定

max-width は要素の最大幅を制限します。これにより、画面が大きくても要素が広がりすぎることを防げます。

max-widthの動作
制限なし(width: 100%)
画面幅に合わせて無限に広がる
制限あり(max-width: 400px)
400pxで止まる
効果
画面が小さい時は通常通り縮小し、大きい時は指定したサイズで止まります
/* 記事の横幅を制限 */
.article {
  width: 100%;          /* 基本は画面幅に合わせる */
  max-width: 800px;     /* でも800pxを超えないように */
}

/* 画像のはみ出し防止 */
.image {
  width: 100%;
  max-width: 100%;      /* 親要素からはみ出さない */
}

min-width - 横幅の下限を設定

min-width は要素の最小幅を保証します。画面が小さくなっても、一定のサイズを維持できます。

min-widthの動作
制限なし
小さくなりすぎ
制限あり(min-width: 200px)
200pxを維持
効果
ボタンやフォームが小さくなりすぎて使いにくくなることを防げます
/* ボタンの最小サイズを確保 */
.button {
  padding: 0.5rem 1rem;
  min-width: 120px;     /* 最低120pxは確保 */
  text-align: center;
}

/* サイドバーの最小幅 */
.sidebar {
  width: 25%;
  min-width: 200px;     /* 狭くなっても200px維持 */
}

組み合わせの活用

実際の開発では、これらを組み合わせて柔軟なレイアウトを作ります。

  • プレビューの幅を変更して、各要素のサイズ変化を確認してみてください。
CSSコード:
プレビュー:

画像を崩さずに縮ませる(width: 100%; height: auto)

女子生徒のアイコン

画像を表示した時に、画面サイズに合わせて大きさを変えたいんですが、縦横の比率が崩れてしまうことがあって…

AI先生のアイコン

それは画像のレスポンシブ対応でよくある課題だね。width: 100%height: auto を組み合わせることで、画像の縦横比を保ちながら親要素に合わせて縮小できるよ。実際に見てみよう。

画像をレスポンシブに表示するには、縦横比を保持しながらサイズを調整することが重要です。間違った方法では画像が歪んでしまいます。

レスポンシブ画像の正しい設定
間違った方法
width: 100%; height: 200px;
画像が歪む
高さも固定すると縦横比が崩れて画像が歪んでしまいます
正しい方法
width: 100%; height: auto;
縦横比を保持
高さを自動にすることで元の縦横比を保ちながら美しく表示
/* ❌ 間違った方法:画像が歪む */
.image-bad {
    width: 100%;
    height: 70px;    /* 固定高さで歪む */
}

/* ✅ 正しい方法:縦横比を保持 */
.image-good {
    width: 100%;      /* 親要素の幅に合わせる */
    height: auto;     /* 縦横比を保持して自動調整 */
}

/* さらに安全な設定 */
.image-responsive {
    max-width: 100%;  /* 親要素からはみ出さない */
    height: auto;     /* 縦横比を保持 */
}

実際の画像で確認してみよう

nature1.jpgを使って、実際にレスポンシブ画像の動作を確認してみましょう。

CSSコード:
プレビュー:
男子生徒のアイコン

なるほど!height: auto にすることで、幅に合わせて高さが自動的に調整されるんですね。

AI先生のアイコン

その通り!さらに max-width: 100% を使うと、画像が親要素より大きい場合でもはみ出すことがないから、より安全なんだ。これが現代のレスポンシブデザインの基本パターンだよ。

画像レスポンシブ対応のポイント

  • width: 100% 親要素の幅に合わせて伸縮
  • height: auto 元の縦横比を保持して高さを自動調整
  • max-width: 100% 画像が親要素からはみ出すことを防ぐ
レスポンシブについて

レスポンシブデザインは、様々な画面サイズに対応するための設計手法です。CSSのサイズ指定と組み合わせることで、ユーザーに最適な表示を提供できます。


詳しくは別の章で解説します。

理解度チェッククイズ

AI先生のアイコン

それじゃあ、今日学んだCSSサイズプロパティについて、理解度をチェックしてみよう!しっかり覚えているかな?

CSSサイズプロパティ ミニクイズ

次の中で、親要素の幅に対する相対的なサイズを指定する単位はどれですか?
px(ピクセル)
%(パーセント)
rem
vw
画面の幅に対する相対的なサイズを指定したい場合、適切な単位はどれですか?
px
%
rem
vw
次のCSSコードで、.box要素の実際の幅は何ピクセルになりますか?
.container {
width: 800px;
}

.box {
width: 25%;
}
25px
100px
200px
400px
要素の最大幅より大きくなりすぎないように制限したい場合、どのプロパティを使いますか?
width
max-width
min-width
height
次のCSSコードで、画像が親要素からはみ出さずに縦横比を保って表示されるのはどれですか?
/* A */
.image {
  width: 100%;
  height: 100%;
}

/* B */
.image {
  width: 100%;
  height: auto;
}

/* C */
.image {
  width: auto;
  height: 100%;
}
A のコード
B のコード
C のコード
どれも同じ
次のCSSコードで、ルートフォントサイズが16pxの場合、.heading要素のfont-sizeは何ピクセルになりますか?
html {
font-size: 16px;
}

.heading {
font-size: 2.5rem;
margin-bottom: 1rem;
}
16px
25px
40px
64px

まとめ

男子生徒のアイコン

今日習った単位を整理すると、pxは固定、%は親要素基準、remはルート基準、vwとvhは画面基準、autoはブラウザお任せってことですね。

AI先生のアイコン

その通り!よくまとめられたね。そして実際の開発では、max-widthやmin-widthと組み合わせることで、どんな画面サイズでも使いやすいデザインが作れるんだ。

女子生徒のアイコン

単位によって得意な場面が違うから、目的に合わせて選ぶのが大切なんですね。

AI先生のアイコン

まさにその通り。最初は迷うかもしれないけど、たくさん実践しているうちに自然と使い分けられるようになるよ。今日学んだ基礎をしっかり覚えておこう。

CSSサイズプロパティ 完全ガイド
  • px(固定単位) ボーダー、アイコンなど正確なサイズが必要な場合
  • %(親要素基準) レイアウト分割、親要素に応じたサイズ調整
  • rem(ルート基準) フォントサイズ、余白など統一感が重要な要素
  • vw/vh(画面基準) 全画面要素、画面サイズに直接連動させたい場合
  • auto(自動計算) ブラウザによる最適なサイズ決定、特にheightで有効
  • max-width/min-width 要素サイズの上限・下限制御で柔軟なレスポンシブ対応

次回は、余白の制御に使う marginpadding について学んでいきます。

学習チェック

このレッスンを理解できたら「完了」をクリックしてください。
後で見直したい場合は「未完了に戻す」で進捗をリセットできます。

レッスン完了!🎉

お疲れさまでした!