メインコンテンツまでスキップ

演習課題

Flexboxを使って実用的なレイアウトを段階的に作成してみましょう。各レベルをクリアして、Flexboxマスターを目指しましょう!

レベル1: 基本的な配置

まずは基本的な配置から始めましょう。

課題1-1: 水平中央配置

3つの要素を横一列に並べ、コンテナの中央に配置してください。

期待される結果:

  • 3つの要素が水平方向に並んでいる
  • 要素全体がコンテナの中央に配置されている
  • 要素間に適度な余白がある
🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

ヒント: display: flex, justify-content, gap プロパティを使用してください。

解答例を見る
.container {
height: 200px;
background-color: #f0f0f0;
border: 2px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
gap: 20px;
}

課題1-2: 完全中央配置

1つの要素をコンテナの完全な中央(水平・垂直ともに中央)に配置してください。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

ヒント: justify-contentalign-items の両方を使用してください。

解答例を見る
.container {
height: 200px;
background-color: #f0f0f0;
border: 2px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
}

課題1-3: 縦並び配置

3つの要素を縦一列に並べ、中央に配置してください。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

ヒント: flex-direction: column を使用してください。

解答例を見る
.container {
height: 300px;
background-color: #f0f0f0;
border: 2px solid #ccc;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 15px;
}

レベル2: 実用的なコンポーネント

実際のWebサイトでよく見かけるコンポーネントを作成してみましょう。

課題2-1: ナビゲーションバー

ロゴを左側に、メニューを右側に配置したナビゲーションバーを作成してください。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

期待される結果:

  • ロゴが左端に配置されている
  • メニューが右端に配置されている
  • メニュー項目が横並びに配置されている
解答例を見る
.navbar {
background-color: #333;
color: white;
padding: 10px 20px;
display: flex;
justify-content: space-between;
align-items: center;
}

.menu {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}

課題2-2: カードコンポーネント

製品カードのレイアウトを作成してください。画像、タイトル、価格、ボタンが含まれます。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

期待される結果:

  • カードが縦方向にレイアウトされている
  • コンテンツエリア内の要素が適切に配置されている
  • ボタンがコンテンツエリアの下部に配置されている
解答例を見る
.card {
width: 250px;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
background-color: white;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
display: flex;
flex-direction: column;
}

.card-content {
padding: 20px;
display: flex;
flex-direction: column;
flex: 1;
}

課題2-3: ボタングループ

異なるサイズのボタンを横並びに配置し、中央揃えにしてください。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー
解答例を見る
.button-group {
padding: 20px;
background-color: #f8f9fa;
border-radius: 8px;
display: flex;
justify-content: center;
align-items: center;
gap: 15px;
}

レベル3: 複合レイアウト

より複雑なレイアウト構造を作成してみましょう。

課題3-1: ヘッダー・サイドバー・メインレイアウト

Webサイトの基本的な構造を作成してください。ヘッダー、サイドバー、メインコンテンツの3つのセクションからなります。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

期待される結果:

  • ヘッダーが上部に固定されている
  • サイドバーが固定幅(約200px)で左側に配置されている
  • メインコンテンツが残りのスペースを占有している
解答例を見る
.main-layout {
display: flex;
height: calc(100% - 80px);
}

.sidebar {
background-color: #f8f9fa;
padding: 20px;
border-right: 1px solid #ddd;
flex: 0 0 200px;
}

.content {
padding: 20px;
flex: 1;
}

課題3-2: カードグリッド

複数のカードを格子状に配置し、画面幅に応じて自動的に折り返すレイアウトを作成してください。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

期待される結果:

  • カードが横に並んで表示される
  • 画面幅が狭くなると自動的に次の行に折り返される
  • カード間に適切な余白がある
  • カードの高さが揃っている
解答例を見る
.card-grid {
padding: 20px;
background-color: #f8f9fa;
display: flex;
flex-wrap: wrap;
gap: 20px;
}

.card {
background-color: white;
border: 1px solid #ddd;
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
flex: 1 1 250px;
}

レベル4: 高度なレイアウト

最後に、より実践的で高度なレイアウトに挑戦してみましょう。

課題4-1: フッター固定レイアウト

コンテンツの量に関係なく、フッターを常にページの下部に固定するレイアウトを作成してください。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

期待される結果:

  • ヘッダーが上部に配置されている
  • メインコンテンツが中央の領域を占有している
  • フッターが下部に固定されている
  • コンテンツが少なくてもフッターは下部に位置する
解答例を見る
.page {
height: 400px;
border: 2px solid #ccc;
display: flex;
flex-direction: column;
}

.page-main {
padding: 20px;
background-color: white;
flex: 1;
}

課題4-2: レスポンシブダッシュボード

統計カードとチャートエリアを含むダッシュボードレイアウトを作成してください。

🎨Playground
HTML
Loading...
CSS
Loading...
プレビュー

期待される結果:

  • 統計カードが横並びに表示される(画面幅に応じて折り返し)
  • チャートエリアが下部に配置される
  • 全体的にバランスの取れたレイアウト
解答例を見る
.dashboard {
padding: 20px;
background-color: #f8f9fa;
min-height: 400px;
display: flex;
flex-direction: column;
}

.stats-grid {
display: flex;
flex-wrap: wrap;
gap: 20px;
margin-bottom: 20px;
}

.stat-card {
background-color: white;
border: 1px solid #ddd;
border-radius: 8px;
padding: 20px;
text-align: center;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
flex: 1 1 200px;
}

.chart-area {
background-color: white;
border: 1px solid #ddd;
border-radius: 8px;
padding: 30px;
text-align: center;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
flex: 1;
}

おめでとうございます!🎉

すべての課題をクリアした方は、Flexboxの基本から応用まで習得できています。これらの知識を活用して、より複雑で実用的なWebレイアウトを作成してみてください。

次のステップ

  1. CSS Grid - より複雑な2次元レイアウトに挑戦
  2. レスポンシブデザイン - メディアクエリと組み合わせた実装
  3. アニメーション - CSS TransitionsやAnimationsと組み合わせ
  4. 実際のプロジェクト - 学んだ知識を実際のWebサイト作成に活用

Flexboxマスターへの道のりを楽しんでください!