コンテンツにスキップ

CSSでのレイアウトと余白

要素の余白、境界線、配置方法を学んで、読みやすく整理されたWebページを作りましょう。margin、padding、flexboxを使ったレイアウト設計をマスターします。

要素の配置と余白を自由自在に操ろう

Section titled “要素の配置と余白を自由自在に操ろう”

前回はCSSの基本とセレクターについて学びました。今度は要素同士の配置や余白を調整して、見やすく整理されたレイアウトを作ってみましょう1

要素の配置を理解すると、まるで部屋の模様替えをするように、Webページの要素を思い通りの場所に配置できるようになります。

レイアウトって奥が深いのね!要素がきちんと整理されていると、読みやすさが全然違うよ。

HTMLの全ての要素は「箱(ボックス)」として扱われます。この箱には4つの領域があります2

  1. Content(内容): 文字や画像が表示される部分
  2. Padding(内側余白): 内容と境界線の間の余白
  3. Border(境界線): 要素の枠線
  4. Margin(外側余白): 他の要素との間の余白

それぞれの要素の周りに色々な種類の空間があることが分かりますね。これらを適切に調整することで、美しいレイアウトが作れます。

Padding(内側余白)を使いこなそう

Section titled “Padding(内側余白)を使いこなそう”

padding プロパティは要素の内容と境界線の間の余白を設定します:

paddingは上下左右を個別に指定することもできます:

Padding の指定パターン:

  • padding: 20px; - 四方向すべて同じ
  • padding-block: 30px; padding-inline: 15px; - 上下と左右を論理プロパティで指定
  • padding-block-start: 10px; - 上側のみ(論理プロパティ)
  • padding-inline-start: 15px; - 左側のみ(論理プロパティ)

上下 30px、左右 15px (padding-block: 30px; padding-inline: 15px;) の余白を設定したいときは、padding: 30px 15px; と書くことができるよ!
さらに、上下左右それぞれの余白を個別に設定したい場合は、padding: 10px 15px 20px 25px; のように書くこともできるよ!
ここあたりの引数の柔軟性 (一括指定プロパティー) は、 padding - MDN で詳しく解説されているよ。

実践: 読みやすい日記レイアウトを作ってみよう

Section titled “実践: 読みやすい日記レイアウトを作ってみよう”

paddingを使って、読みやすい日記のレイアウトを作成してみてください:

解答例を見る
.spring {
border-color: #ffb6c1;
padding: 20px;
}
.summer {
border-color: #87ceeb;
padding: 30px;
}
.autumn {
border-color: #daa520;
padding-block: 15px;
padding-inline: 20px;
}

Paddingの効果:

  • 内容が枠線にくっつかず、読みやすくなる
  • 要素全体が大きく見え、重要度を表現できる
  • 適度な余白が上品で落ち着いた印象を与える

Margin(外側余白)で要素間の距離を調整しよう

Section titled “Margin(外側余白)で要素間の距離を調整しよう”

margin プロパティは要素同士の間の余白を設定します:

margin-inline: auto; を使うと、要素を中央に配置できます:

Border(境界線)で要素を装飾しよう

Section titled “Border(境界線)で要素を装飾しよう”

border プロパティで要素に枠線を付けることができます:

Border の指定方法:

  • border: 太さ スタイル 色; - まとめて指定
  • border-width: 2px; - 太さのみ
  • border-style: solid; - スタイルのみ(solid, dashed, dotted など)
  • border-color: #333; - 色のみ
  • border-block-start:, border-inline-end: など - 論理プロパティで個別指定

Flexboxで要素を簡単に配置しよう

Section titled “Flexboxで要素を簡単に配置しよう”

display: flex を使うと、要素を横並びにしたり、中央に配置したりできます3

Flexboxには要素の配置を制御する便利なプロパティがあります:

Flexboxの主要プロパティ:

  • justify-content: 水平方向の配置(flex-start, center, space-between, space-around)
  • align-items: 垂直方向の配置(flex-start, center, flex-end, stretch)
  • flex-direction: 並び方向(row, column)
  • flex-wrap: 折り返し(wrap, nowrap)
  • gap: 要素間の間隔

実践: Flexboxでカード型レイアウトを作ってみよう

Section titled “実践: Flexboxでカード型レイアウトを作ってみよう”

Flexboxを使って、カード型レイアウトを作成してみてください:

解答例を見る
.hobby-cards {
display: flex;
gap: 15px;
flex-wrap: wrap;
}
.card {
background-color: #ffffff;
border: 2px solid #deb887;
padding: 15px;
border-radius: 12px;
flex: 1;
min-width: 150px;
}
.items {
display: flex;
justify-content: center;
gap: 12px;
flex-wrap: wrap;
}

Flexboxレイアウトの利点:

  • 簡単な横並び: display: flex だけで要素が横に並ぶ
  • 等幅分割: flex: 1 で要素を等しい幅に分割
  • 中央揃え: justify-content: center で簡単に中央配置
  • レスポンシブ: flex-wrap で画面サイズに応じて折り返し

CSS Grid で格子状レイアウトを作ろう

Section titled “CSS Grid で格子状レイアウトを作ろう”

display: grid を使うと、格子状の複雑なレイアウトも簡単に作れます:

CSS Grid の主要なプロパティを理解しましょう:

CSS Grid の主要プロパティ:

  • grid-template-columns: 列の定義(repeat(3, 1fr) で3等分など)
  • grid-template-rows: 行の定義
  • gap: グリッド間の間隔
  • grid-column: span 2: 要素を2列分にまたがせる
  • grid-row: span 2: 要素を2行分にまたがせる

総合演習: レスポンシブな動物日記サイトを完成させよう

Section titled “総合演習: レスポンシブな動物日記サイトを完成させよう”

これまで学んだボックスモデル、margin、padding、flexbox、gridの知識を使って、動物日記サイトを作ってみましょう。

解答例を見る
/* 1. 基本設定 */
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
background-color: #faf8f3;
color: #333333;
line-height: 1.6;
max-width: 900px;
margin-inline: auto;
}
/* 2. ヘッダーのレイアウト */
.header {
text-align: center;
padding: 30px 20px;
background-color: #f0f4f0;
border-radius: 0 0 15px 15px;
margin-block-end: 25px;
}
.header h1 {
margin: 0 0 8px 0;
color: #2d5a2d;
font-size: 24px;
}
.subtitle {
margin: 0;
color: #666666;
font-style: italic;
font-size: 14px;
}
/* 3. 特集セクション */
.main {
padding-inline: 20px;
}
.featured {
margin-block-end: 30px;
}
.featured h2 {
color: #2d5a2d;
margin-block-end: 15px;
font-size: 20px;
}
.stories {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 15px;
}
.story {
background-color: #ffffff;
padding: 15px;
border-radius: 12px;
border: 2px solid #e8ebe8;
}
.story.main-story {
grid-column: span 2;
background-color: #f8fffe;
border-color: #90ee90;
}
.story h3 {
margin: 0 0 8px 0;
color: #2d5a2d;
font-size: 14px;
}
.story p {
margin: 0;
font-size: 13px;
line-height: 1.6;
}
/* 4. 日記エントリーセクション */
.entries h2 {
color: #2d5a2d;
margin-block-end: 15px;
font-size: 20px;
}
.entries-list {
display: flex;
flex-direction: column;
gap: 15px;
}
.entry {
background-color: #ffffff;
padding: 20px;
border-radius: 12px;
border-inline-start: 4px solid #90ee90;
}
.entry-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-block-end: 12px;
flex-wrap: wrap;
gap: 8px;
}
.entry-header h3 {
margin: 0;
color: #2d5a2d;
font-size: 16px;
}
.time {
color: #888888;
font-size: 13px;
font-style: italic;
}
.entry p {
margin: 0 0 12px 0;
line-height: 1.7;
font-size: 14px;
}
.tags {
display: flex;
gap: 6px;
flex-wrap: wrap;
}
.tag {
background-color: #e8f5e8;
color: #2d5a2d;
padding: 4px 10px;
border-radius: 12px;
font-size: 12px;
font-weight: bold;
border: 1px solid #90ee90;
}
/* 5. フッター */
.footer {
background-color: #e8ebe8;
text-align: center;
padding: 25px 20px;
margin-block-start: 40px;
border-radius: 15px 15px 0 0;
}
.footer p {
margin: 0;
color: #666666;
font-size: 14px;
}
/* レスポンシブ対応 */
@media (max-width: 500px) {
.stories {
grid-template-columns: 1fr;
}
.story.main-story {
grid-column: span 1;
}
.entry-header {
flex-direction: column;
align-items: flex-start;
}
}

レイアウト設計のポイント:

  • Grid: 複雑な格子状レイアウトに最適
  • Flexbox: 一次元の配置(横並び・縦並び)に最適
  • 論理プロパティ: margin-inlinepadding-block などで将来対応
  • レスポンシブ: メディアクエリで小画面対応
  • 視覚的階層: 色とスペースで情報の重要度を表現

レイアウト設計のベストプラクティス

Section titled “レイアウト設計のベストプラクティス”

効果的なレイアウトを作るためのガイドライン:

レイアウトチェックリスト:

  • ✅ 適切な余白(padding/margin)で要素が読みやすい
  • ✅ 関連する要素同士は近く、無関係な要素は離れている
  • ✅ Flexboxで一次元レイアウト、Gridで二次元レイアウト
  • ✅ 中央揃えや等幅分割が適切に使われている
  • ✅ モバイル端末でも見やすいレスポンシブ対応
  • ✅ 論理プロパティ(margin-inline、padding-blockなど)を活用

チェックポイント!

  • ボックスモデル(content、padding、border、margin)を理解した
  • padding プロパティで内側余白を調整できる
  • margin プロパティで外側余白を調整できる
  • margin-inline: auto で中央揃えができる
  • border プロパティで境界線を設定できる
  • display: flex でFlexboxレイアウトを作れる
  • justify-content で水平配置を制御できる
  • display: grid でGridレイアウトを作れる
  • 論理プロパティ(padding-block、margin-inlineなど)を使える
  • レスポンシブ対応の基本を理解した
  1. CSSボックスモデルの基本 - esa#1046

  2. CSSレイアウトプロパティ - esa#1047

  3. Flexboxレイアウトガイド - esa#1049

最後まで読み終えました! えらい!