基本概念の理解(width と height)
なぜサイズ指定が重要なのか
Web制作において、要素のサイズを適切に制御することは、美しく使いやすいWebページを作るために不可欠です。サイズ指定が与える影響を理解することで、より効果的なWebデザインができるようになります。
CSSでサイズを指定する基本の方法
CSSで要素のサイズを制御する際に最も基本となるのが、幅を指定するwidthと高さを指定するheightの2つのプロパティです。これらを使うことで、要素の表示領域を細かく調整できます。
width(幅)プロパティ
要素の幅を指定するプロパティです。レイアウトの基本となる重要な設定で、コンテンツの表示領域を決める要素の一つです。
基本的な書き方
セレクター {
width: サイズの値;
} サイズの値は以下の方法で指定できます。
- ピクセル値
200px、300pxなど固定サイズ - パーセント値
50%、80%など親要素に対する割合 - auto ブラウザが自動的にサイズを決定(初期値)
- その他の単位
em、rem、vwなど(後で詳しく学習)
実際のコード例
/* ピクセル値で固定幅を指定 */
.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 の効果を確認してみましょう。
- コードを編集して数値を変更すると、リアルタイムで変化を確認できます
要素の種類による width・height の効き方
HTMLの要素には、ブロック要素とインライン要素という2つの基本的な表示タイプがあり、width と height の効き方が異なります。さらにインラインブロック要素という中間的なタイプも存在します。これらの違いを見ていきましょう。
ブロック要素とインライン要素の特徴
各要素タイプの特徴まとめ
3つの要素タイプの特徴を一覧で確認してみましょう。
| 要素タイプ | 幅・高さの指定 | 主な特徴 | 代表的な要素 |
|---|---|---|---|
| ブロック要素 | 効く | 横幅いっぱいに広がり、縦に積み重なる。 | divやpタグなど |
| インライン要素 | 効かない | 内容分だけのサイズで、横に並ぶ。 | spanやaタグなど |
| インラインブロック要素 | 効く | サイズ指定可能で、横に並ぶ。 | buttonやinputタグなど |
実際の動作比較
ブロック要素、インライン要素、そしてインラインブロック要素で、width と height の効き方がどう違うかを実際に確認してみましょう。
単位の基本
固定サイズ vs 可変サイズの考え方
CSSの単位は大きく固定サイズと可変サイズに分けられます。どちらを選ぶかで、Webページの表示が大きく変わります。
• アイコンサイズ
• ボーダーの太さ
• レイアウト制御
• コンテンツエリア
固定サイズ単位の詳細
画面サイズに関係なく、常に同じサイズで表示される単位です。
px(ピクセル)- Web制作の基本単位
pxは画面上の1ピクセルを表す単位で、最も直感的で理解しやすい固定単位です。デバイスの解像度に依存せず、常に同じ物理サイズを持ちます。
- 特徴 画面サイズに関係なく常に同じサイズ
- 使用場面 ボーダーの太さ、アイコンサイズ、細かい装飾
- メリット 正確なサイズ指定、計算が簡単
- デメリット レスポンシブデザインには制限的
.button {
width: 120px; /* 常に120ピクセル幅 */
height: 40px; /* 常に40ピクセル高 */
border: 2px solid blue; /* 2ピクセルのボーダー */
} 可変サイズ単位の詳細
親要素や画面サイズに応じて、動的にサイズが変化する単位です。現代のレスポンシブデザインの基礎となります。
rem(ルート基準)- フォントサイズ基準の相対サイズ
rem(root em)は、ルート要素(html要素)のフォントサイズを基準とした単位で、現代Web開発で最も重要な単位の一つです。
- 特徴 ルートフォントサイズ(通常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とは、親要素のフォントサイズを基準とした相対単位です。remはルート要素のフォントサイズを基準にするのに対し、emは親要素のフォントサイズを基準にします。
- em 親要素が20pxなら、1em = 20px(親要素に依存して変化)
- rem 常にルートサイズ基準、1rem = 16px(一貫性あり)
通常、remの方が一貫性があり、管理しやすいため多くのプロジェクトで利用されています。
%(パーセント)- 親要素基準の相対サイズ
%は親要素のサイズに対する割合を表す単位で、レスポンシブデザインの基本となります。例えば、親要素の幅が1000pxの場合、50%は500pxになります。
- 特徴 親要素のサイズに対する割合で計算
- 使用場面 レイアウトの分割、親要素に応じたサイズ調整
- メリット 親要素の変化に自動追従、柔軟なレイアウト
- 注意点 親要素にサイズが設定されていないと計算できない
.sidebar {
width: 25%; /* 親要素の25%の幅 */
}
.main-content {
width: 75%; /* 親要素の75%の幅 */
} 現代のWeb開発では、直感的なサイズ計算のために box-sizing: border-box がよく使われます。
box-sizing: border-boxとは、要素の width と height に 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%(100vw = 画面幅100%)
- vh ビューポート高さの1%(100vh = 画面高さ100%)
- 使用場面 ヒーローセクション、フルスクリーン要素、レスポンシブタイポグラフィ
.hero-section {
width: 100vw; /* 画面幅いっぱい */
height: 100vh; /* 画面高さいっぱい */
}
.half-screen {
width: 50vw; /* 画面幅の半分 */
} auto(自動)- ブラウザ計算による動的サイズ
autoは数値ではなく、ブラウザが自動的にサイズを計算する特別な値です。width と height の初期値で、最も重要な概念の一つです。
複数行になった
場合
最適なサイズを自動的に計算・適用
- ブロック要素のwidth: auto 親要素の横幅いっぱいに広がる
- ブロック要素のheight: auto 内容に応じて高さが自動調整される
- インライン要素のwidth・height: auto 内容のサイズに依存(テキスト量にぴったり)
※width・heightプロパティは効かない
.flexible-box {
display: block; /* ブロック要素 */
width: auto; /* 親要素いっぱいに広がる */
height: auto; /* 内容に応じて調整される */
} 実際の単位比較
様々な単位がどのように動作するかを実際に確認してみましょう。
- プレビューの幅を変更して、各要素のサイズ変化を確認してみてください。
Web制作における単位選択の基本的な考え方をまとめます。
- px 細かい装飾、ボーダー、アイコンサイズなど精密な制御が必要な場合
- rem フォントサイズに対する相対単位、テキストの可読性向上
- % 親要素に対する相対的なサイズ指定、レイアウトの分割
- vw・vh 画面サイズに応じたフルスクリーン要素、ヒーローセクション
- auto ブラウザによる自動サイズ決定、特にheightで推奨
次のセクションでは、これらの単位を使った実践的なテクニックを学習します。
実践的なテクニック
max-width と min-width の活用
max-width - 横幅の上限を設定
max-width は要素の最大幅を制限します。これにより、画面が大きくても要素が広がりすぎることを防げます。
/* 記事の横幅を制限 */
.article {
width: 100%; /* 基本は画面幅に合わせる */
max-width: 800px; /* でも800pxを超えないように */
}
/* 画像のはみ出し防止 */
.image {
width: 100%;
max-width: 100%; /* 親要素からはみ出さない */
} min-width - 横幅の下限を設定
min-width は要素の最小幅を保証します。画面が小さくなっても、一定のサイズを維持できます。
/* ボタンの最小サイズを確保 */
.button {
padding: 0.5rem 1rem;
min-width: 120px; /* 最低120pxは確保 */
text-align: center;
}
/* サイドバーの最小幅 */
.sidebar {
width: 25%;
min-width: 200px; /* 狭くなっても200px維持 */
} 組み合わせの活用
実際の開発では、これらを組み合わせて柔軟なレイアウトを作ります。
- プレビューの幅を変更して、各要素のサイズ変化を確認してみてください。
画像を崩さずに縮ませる(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を使って、実際にレスポンシブ画像の動作を確認してみましょう。
画像レスポンシブ対応のポイント
- width: 100% 親要素の幅に合わせて伸縮
- height: auto 元の縦横比を保持して高さを自動調整
- max-width: 100% 画像が親要素からはみ出すことを防ぐ
レスポンシブデザインは、様々な画面サイズに対応するための設計手法です。CSSのサイズ指定と組み合わせることで、ユーザーに最適な表示を提供できます。
詳しくは別の章で解説します。
理解度チェッククイズ
CSSサイズプロパティ ミニクイズ
.container {
width: 800px;
}
.box {
width: 25%;
} /* A */
.image {
width: 100%;
height: 100%;
}
/* B */
.image {
width: 100%;
height: auto;
}
/* C */
.image {
width: auto;
height: 100%;
} html {
font-size: 16px;
}
.heading {
font-size: 2.5rem;
margin-bottom: 1rem;
} まとめ
- px(固定単位) ボーダー、アイコンなど正確なサイズが必要な場合
- %(親要素基準) レイアウト分割、親要素に応じたサイズ調整
- rem(ルート基準) フォントサイズ、余白など統一感が重要な要素
- vw/vh(画面基準) 全画面要素、画面サイズに直接連動させたい場合
- auto(自動計算) ブラウザによる最適なサイズ決定、特にheightで有効
- max-width/min-width 要素サイズの上限・下限制御で柔軟なレスポンシブ対応
次回は、余白の制御に使う margin と padding について学んでいきます。