0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Tailwind CSS入門 Day10】PC管理画面レイアウトを作る

0
Last updated at Posted at 2026-05-20

目次

はじめに

この記事は、Tailwind CSSで管理画面UIを1ステップずつ作る学習記録です。
過去記事は末尾の「シリーズ記事」にまとめています。

今日作るもの

Day10では、Day9で作った ヘッダー + サイドバー + 作品カード を元に、PC管理画面らしいレイアウトへ整えます。

Day9では「サイドバーを作る」ことが主役でした。
Day10では、右側のメインエリアを整えて、画面全体を 管理画面レイアウト として見やすくしていきます。

┌────────────────────────────────────┐
│ Admin Dashboard        管理者表示   │
├──────────────┬─────────────────────┤
│ サイドバー    │ メインエリア          │
│              │ ┌─────────────────┐ │
│              │ │ 作品カード        │ │
│              │ └─────────────────┘ │
└──────────────┴─────────────────────┘

今回は、まだテーブルは作りません。
作品カードを使ったまま、右側のメイン表示エリア を整えます。

STEP 1:Day10用HTMLファイルを作る

まず、Day10用のHTMLファイルを作成します。

day10-pc-admin-layout.html

Day9の完成形を元にして進めたいので、Day9ファイルをコピーします。

エクスプローラーでコピーしても大丈夫です。

cp day09-pc-sidebar.html day10-pc-admin-layout.html

現在の構成に、Day10用ファイルが追加される形です。

tailwind-learning/
├── day01-heading.html
├── day02-card-base.html
├── day03-image-card.html
├── day04-card-text.html
├── day05-card-buttons.html
├── day06-card-complete.html
├── day07-button-colors.html
├── day08-admin-header.html
├── day09-pc-sidebar.html
├── day10-pc-admin-layout.html
└── images/
    └── sample-poster.png

STEP 2:タイトルをDay10用に直す

day10-pc-admin-layout.html<title> を、Day10用に変更してください。

修正前

<title>Day 9 PC用サイドバーを作る</title>

修正後

<title>Day 10 PC管理画面レイアウトを作る</title>

このSTEPでは、ブラウザタブに表示されるタイトルだけ を変更します。
画面に表示されているヘッダー、サイドバー、作品カード部分はまだ触りません。

STEP 3:作品カードをメインエリア用の箱で囲む

Day10では、右側を メインエリア として扱えるようにします。

今は、main の中に aside と作品カードが直接並んでいます。

修正前

<main class="flex items-start">
    <aside class="w-48 bg-gray-600 text-white p-4 min-h-screen">
        <!-- サイドバー -->
    </aside>

    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-6">
        <!-- 作品カード -->
    </div>
</main>

修正後

作品カードを、もう1つ div で囲みます。

<main class="flex items-start">
    <aside class="w-48 bg-gray-600 text-white p-4 min-h-screen">
        <!-- サイドバー -->
    </aside>

    <div>
        <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-6">
            <!-- 作品カード -->
        </div>
    </div>
</main>

今回のポイント

このSTEPでは、まだTailwind CSSのclassは追加しません。

まずは、右側の表示領域を作るために、作品カードを箱で囲むだけです。

main
├── aside
└── div
    └── 作品カード

次のSTEPで、この右側の div にメインエリア用のclassを追加します。

STEP 4:右側のメインエリアを広げる

今は、作品カードを div で囲んだだけなので、右側のエリア自体にはまだ幅の指定がありません。

次は、作品カードを囲んだ外側の divflex-1 を追加します。

修正前

<main class="flex items-start">
    <aside class="w-48 bg-gray-600 text-white p-4 min-h-screen">
        <!-- サイドバー -->
    </aside>

    <div>
        <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-6">
            <!-- 作品カード -->
        </div>
    </div>
</main>

修正後

<main class="flex items-start">
    <aside class="w-48 bg-gray-600 text-white p-4 min-h-screen">
        <!-- サイドバー -->
    </aside>

    <div class="flex-1">
        <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-6">
            <!-- 作品カード -->
        </div>
    </div>
</main>

今回追加するclass

class 役割
flex-1 サイドバー以外の残り幅をメインエリアとして使う

今回のポイント

mainflex になっています。

その中で、

左側:aside
右側:div

右側の divflex-1 を付けることで、サイドバー以外の残り幅をメインエリアとして使えるようになります。

このSTEPでは、まだ見た目の変化は大きくないかもしれません。
右側に メインエリアの土台を作る ための指定です。

STEP 5:メインエリアに余白を付ける

今は右側の divflex-1 で広がるようになりました。
次は、メインエリアの内側に余白を付けて、管理画面らしく整えます。

修正前

<div class="flex-1">
    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-6">
        <!-- 作品カード -->
    </div>
</div>

修正後

<div class="flex-1 p-6">
    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-6">
        <!-- 作品カード -->
    </div>
</div>

今回追加するclass

class 役割
p-6 メインエリアの内側に余白を付ける

今回のポイント

Day9までは、作品カード自身に mt-6 を付けて、上方向の余白を作っていました。

Day10では、右側全体を メインエリア として扱うため、外側の divp-6 を付けます。

これにより、右側エリア全体に余白ができて、管理画面のメインコンテンツらしくなります。

STEP 6:作品カードの上余白を外す

今は、メインエリア側に p-6 を付けたので、右側全体に余白ができています。

そのため、作品カード自身に付いている mt-6 は少し余白が重複します。

修正前

<div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-6">
    <!-- 作品カード -->
</div>

修正後

<div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto">
    <!-- 作品カード -->
</div>

削除するclass

class 理由
mt-6 メインエリア側の p-6 で余白を管理するため

今回のポイント

Day9までは、作品カード単体で上余白を作るために mt-6 を使っていました。

Day10では、右側のメインエリアに p-6 を付けたので、カード側の mt-6 を外して、余白の管理場所を 作品カード自身 から メインエリア に移します。

これで、右側エリア全体の余白として整理できます。

STEP 7:メインエリアに見出しを追加する

右側のメインエリアに余白が付き、作品カードの上余白も整理できました。

次は、メインエリアの上部に 見出し を追加します。

Day10ではテーブルは作らないので、見出しだけ追加して、右側が「メインコンテンツ領域」だと分かるようにします。

修正前

<div class="flex-1 p-6">
    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto">
        <!-- 作品カード -->
    </div>
</div>

修正後

<div class="flex-1 p-6">
    <h2 class="text-lg font-bold">
        作品管理
    </h2>

    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto">
        <!-- 作品カード -->
    </div>
</div>

今回追加するclass

class 役割
text-lg 見出しの文字サイズを少し大きくする
font-bold 見出しの文字を太字にする

今回のポイント

Day10では、右側を 管理画面のメインエリア として見せたいので、作品管理 という見出しを追加します。

まだ作品一覧テーブルは作りません。
ここでは、メインエリアのタイトルを置くだけです。

STEP 8:見出しの下に補足文を追加する

右側のメインエリアに 作品管理 の見出しを追加しました。

次は、見出しの下に 補足文 を追加して、メインエリアの内容が分かるようにします。

修正前

<div class="flex-1 p-6">
    <h2 class="text-lg font-bold">
        作品管理
    </h2>

    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto">
        <!-- 作品カード -->
    </div>
</div>

修正後

<div class="flex-1 p-6">
    <h2 class="text-lg font-bold">
        作品管理
    </h2>

    <p class="text-sm text-gray-600 mt-1">
        登録済み作品の確認・編集・削除を行います。
    </p>

    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto">
        <!-- 作品カード -->
    </div>
</div>

今回追加するclass

class 役割
text-sm 補足文の文字サイズを少し小さくする
text-gray-600 補足文の文字色をグレーにして控えめにする
mt-1 見出しと補足文の間に少し余白を付ける

今回のポイント

作品管理 はメインエリアの見出しなので、text-lgfont-bold で少し目立たせています。

一方で、補足文は説明なので、text-smtext-gray-600 を使って控えめに表示します。

また、mt-1 を付けることで、見出しと補足文の間に少し余白を作りました。

見出しと補足文は同じ内容のまとまりなので、広く空けすぎず、近すぎない程度の余白にしました。

STEP 9:補足文と作品カードの間に余白を付ける

今は、作品管理 の見出し、補足文、作品カードが並んでいる状態です。

次は、作品カードに mt-4 を追加して、補足文と作品カードの間に余白を作ります。

修正前

<div class="flex-1 p-6">
    <h2 class="text-lg font-bold">
        作品管理
    </h2>

    <p class="text-sm text-gray-600 mt-1">
        登録済み作品の確認・編集・削除を行います。
    </p>

    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto">
        <!-- 作品カード -->
    </div>
</div>

修正後

<div class="flex-1 p-6">
    <h2 class="text-lg font-bold">
        作品管理
    </h2>

    <p class="text-sm text-gray-600 mt-1">
        登録済み作品の確認・編集・削除を行います。
    </p>

    <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-4">
        <!-- 作品カード -->
    </div>
</div>

今回追加するclass

class 役割
mt-4 補足文と作品カードの間に余白を付ける

今回のポイント

STEP6で mt-6 を外したのは、メインエリア全体の余白を p-6 で管理するためでした。

STEP8で見出しの下に補足文を追加したので、今回は補足文と作品カードの間隔として、作品カードに mt-4 を付けます。

メインエリア外側の余白:p-6
見出しと補足文の間隔:mt-1
補足文と作品カードの間隔:mt-4

これで、余白の役割が分かりやすくなります。

STEP 10:作品カードを左寄せにする

今は作品カードに mx-auto が付いているため、メインエリア内で中央寄せになっています。

Day10では、PC管理画面レイアウトとして、右側のメインエリア内にコンテンツを左から配置する形に整えます。

修正前

<div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mx-auto mt-4">
    <!-- 作品カード -->
</div>

修正後

<div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mt-4">
    <!-- 作品カード -->
</div>

削除するclass

class 理由
mx-auto メインエリア内で中央寄せではなく、左寄せにするため

今回のポイント

Day6では、作品カード単体を画面中央に見せるために mx-auto を使いました。

Day10では、右側にメインエリアができたので、カードを中央寄せにするよりも、見出しの下に左寄せで配置した方が管理画面らしく見えます。

STEP 11:補足文と作品カードの間隔を整える

今は、作品管理 の見出し、補足文、作品カードが並んでいます。

次は、作品カードの上余白を少しだけ広げて、補足文との間隔を整えます。

修正前

<p class="text-sm text-gray-600 mt-1">
    登録済み作品の確認・編集・削除を行います。
</p>

<div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mt-4">
    <!-- 作品カード -->
</div>

修正後

<p class="text-sm text-gray-600 mt-1">
    登録済み作品の確認・編集・削除を行います。
</p>

<div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mt-6">
    <!-- 作品カード -->
</div>

変更するclass

修正前 修正後 役割
mt-4 mt-6 補足文と作品カードの間隔を少し広げる

今回のポイント

STEP9では、補足文と作品カードの間隔として mt-4 を付けました。

その後、作品カードを左寄せにした状態で確認すると、補足文とカードの間が少し近く感じました。

そこで、作品カードの上余白を mt-4 から mt-6 に変更し、補足文と作品カードの間隔を少し広げました。

mt-4 でも間違いではありませんが、今回の表示では mt-6 の方が、見出し・補足文・カードのまとまりが自然に見えました。

STEP 12:メインエリアの背景色を明確にする

今は bodybg-gray-100 が付いているため、画面全体は薄いグレーです。

ただ、Day10では右側を メインエリア として扱いたいので、外側の div にも bg-gray-100 を付けて、メインエリアであることを明確にします。

修正前

<div class="flex-1 p-6">

修正後

<div class="flex-1 p-6 bg-gray-100">

今回追加するclass

class 役割
bg-gray-100 メインエリアの背景を薄いグレーにする

今回のポイント

すでに bodybg-gray-100 があるため、見た目の変化は大きくないかもしれません。

ただ、Day10では右側の divメインエリアとして独立して扱う ため、bg-gray-100 を明示しておくと、コード上でも役割が分かりやすくなります。

body:画面全体の背景
main内の右側div:管理画面のメインエリア

STEP 13:メインエリアの高さを整える

今は、サイドバーに min-h-screen が付いているため、左側は画面下まで伸びています。

ただし、右側のメインエリアは中身の高さ分だけなので、コード上は左右で高さの考え方が少し分かれています。

Day10では、右側のメインエリアにも min-h-screen を追加して、サイドバーとメインエリアの高さを揃える形にします。

修正前

<div class="flex-1 p-6 bg-gray-100">

修正後

<div class="flex-1 p-6 bg-gray-100 min-h-screen">

今回追加するclass

class 役割
min-h-screen メインエリアの最小高さを画面の高さにする

今回のポイント

Day9では、サイドバーだけに min-h-screen を付けました。

Day10では、右側も管理画面のメインエリアとして扱うため、メインエリアにも min-h-screen を付けます。

これで、左側のサイドバーと右側のメインエリアが、どちらも画面の高さまで伸びる構成になります。

左側:aside min-h-screen
右側:main内のdiv min-h-screen

完成コード

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Day 10 PC管理画面レイアウトを作る</title>
    <script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100">
    <header class="bg-gray-900 text-white px-6 py-4 flex justify-between items-center">
        <h1 class="text-xl">
            Admin Dashboard
        </h1>

        <p class="text-sm">
            管理者:遅咲きエンジニア
        </p>
    </header>

    <main class="flex items-start">
        <aside class="w-48 bg-gray-600 text-white p-4 min-h-screen">
            <!-- サイドバー -->
            <p class="font-bold">
                サイドバー
            </p>

            <ul class="mt-4 space-y-2 text-sm">
                <li class="px-2 py-1 rounded hover:bg-gray-500">ダッシュボード</li>
                <li class="px-2 py-1 rounded hover:bg-gray-500">作品一覧</li>
                <li class="px-2 py-1 rounded hover:bg-gray-500">レビュー管理</li>
            </ul>
        </aside>

        <div class="flex-1 p-6 bg-gray-100 min-h-screen">
            <h2 class="text-lg font-bold">
                作品管理
            </h2>

            <p class="text-sm text-gray-600 mt-1">
                登録済み作品の確認・編集・削除を行います。
            </p>

            <div class="bg-white border rounded-lg shadow-sm p-4 flex gap-4 max-w-sm mt-6">
                <!-- 作品カード -->
                <img
                    src="images/sample-poster.png"
                    alt="サンプル画像"
                    class="w-20 h-28 object-cover rounded-md flex-shrink-0"
                >

                <div class="flex-1">
                    <p class="text-lg font-bold">サンプル映画タイトル</p>
                    <p class="text-sm text-gray-600">
                        平均評価:<span class="text-yellow-500">4.2</span>
                    </p>
                    <p class="text-sm text-gray-600">レビュー数:12件</p>

                    <div class="flex gap-2 mt-3 flex-wrap">
                        <button class="px-3 py-1.5 rounded-md border border-gray-300 text-sm font-medium text-gray-700 hover:bg-gray-200">
                            詳細
                        </button>

                        <button class="px-3 py-1.5 rounded-md border border-blue-500 text-sm font-medium text-blue-600 hover:bg-blue-100">
                            編集
                        </button>

                        <button class="px-3 py-1.5 rounded-md border border-red-500 text-sm font-medium text-red-600 hover:bg-red-100">
                            削除
                        </button>
                    </div>
                </div>
            </div>
        </div>
    </main>
</body>
</html>

使った または 削除したTailwind CSSのclass

追加したclass

class 内容
flex-1 サイドバー以外の残り幅をメインエリアとして使う
p-6 メインエリアの内側に余白を付ける
text-lg 見出しの文字サイズを少し大きくする
font-bold 見出しの文字を太字にする
text-sm 補足文の文字サイズを少し小さくする
text-gray-600 補足文の文字色をグレーにして控えめにする
mt-1 見出しと補足文の間に少し余白を付ける
mt-6 補足文と作品カードの間に余白を付ける
bg-gray-100 メインエリアの背景を薄いグレーにする
min-h-screen メインエリアの最小高さを画面の高さにする

削除したclass

class 内容
mt-6 作品カード単体の上余白を一度外し、メインエリア側の余白管理に変更した
mx-auto 作品カードを中央寄せではなく、メインエリア内で左寄せにするため削除した

Day9では作品カード単体の上余白として mt-6 を使っていました。

Day10では一度 mt-6 を外して、メインエリア側の p-6 で外側の余白を管理しました。

その後、補足文と作品カードの間隔を整える目的で、作品カードに mt-6 を付け直しました。

表示確認

以下の点をブラウザで確認しました。

Day10では右側メインエリアを整えてきたので、以下を確認します。

確認項目 見るところ
左側にサイドバーがある aside
右側にメインエリアがある flex-1
メインエリアに余白がある p-6
メインエリアに 作品管理 の見出しがある h2
見出しの下に補足文がある text-sm text-gray-600
作品カードがメインエリア内で左寄せになっている mx-auto を削除済み
補足文と作品カードの間に余白がある mt-6
右側メインエリアも画面下まで伸びている min-h-screen

特に確認してほしい点

min-h-screen を右側にも追加したので、表示が不自然になっていないか確認してください。

特に見るところはここです。

  • 左サイドバーと右メインエリアの高さが揃って見えるか
  • 作品カードが縦に伸びていないか
    -余白が広すぎないか

day10-pc-admin-layout-complete.png

今日分かったこと

Day10では、Day9で作ったサイドバー付き画面を元に、PC管理画面らしいレイアウトへ整えました。

まず、作品カードを外側の div で囲むことで、右側をメインエリアとして扱えるようにしました。

flex-1 を付けることで、サイドバー以外の残り幅をメインエリアとして使えることが分かりました。

また、メインエリアに p-6 を付けることで、右側全体に余白を作れました。

Day9までは作品カード自身に mt-6 を付けていましたが、Day10ではメインエリア側で余白を管理する形に変更しました。

そのため、作品カードの上余白を一度外し、メインエリア内の配置として整理しました。

メインエリアには 作品管理 の見出しを追加し、text-lgfont-bold で少し目立たせました。

補足文には text-smtext-gray-600 を使うことで、見出しより控えめな説明文として表示できました。

さらに、見出しと補足文の間には mt-1 を付け、近すぎず離れすぎない余白に調整しました。

作品カードは、以前は mx-auto で中央寄せにしていましたが、管理画面のメインエリアでは左寄せの方が自然に見えました。

そのため、mx-auto を外して、見出しの下に左寄せで配置しました。

補足文と作品カードの間には mt-6 を付けることで、説明文とカードの間に適度な余白を作れました。

また、メインエリアに bg-gray-100 を付けることで、右側の領域をコード上でもメインエリアとして分かりやすくできました。

最後に、メインエリアにも min-h-screen を付けることで、左側のサイドバーと右側のメインエリアの高さを揃えました。

Day10では、作品カードそのものを作り込むのではなく、サイドバーとメインエリアを分けて、管理画面全体のレイアウトとして整えることができました。

次回やること

シリーズ記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?