Flexboxによるレスポンシブサイドバー
Flexboxでレスポンシブなサイドバーレイアウトを構築。サイドバーは固定幅でメインコンテンツが残りのスペースを埋め、小さい画面では折りたたまれます。
Responsive Patterns
詳細な説明
固定サイドバーと可変コンテンツ
サイドバーレイアウトは最も一般的なWebパターンの1つです:固定幅のナビゲーションパネルと可変のメインコンテンツエリア。Flexboxはこれをエレガントに処理します。
CSSコード
.layout {
display: flex;
gap: 24px;
min-height: 100vh;
}
.sidebar {
flex: 0 0 250px;
}
.main {
flex: 1;
min-width: 0;
}
仕組み
- サイドバー:
flex: 0 0 250pxはサイドバーが拡大せず(flex-grow: 0)、縮小せず(flex-shrink: 0)、固定ベースが250pxであることを意味します。 - メインコンテンツ:
flex: 1は残りのスペースすべてを埋めるように拡大します。min-width: 0はコンテンツのオーバーフローを防ぎます。
レスポンシブ対応
@media (max-width: 768px) {
.layout {
flex-direction: column;
}
.sidebar {
flex-basis: auto;
}
}
小さい画面では、flex-direction: columnに切り替えてサイドバーをメインコンテンツの上(または下)にスタックします。
min-width: 0が重要な理由
デフォルトでは、フレックスアイテムはmin-width: autoを持ち、コンテンツの最小幅以下に縮小するのを防ぎます。min-width: 0を設定すると、フレックスアイテムがコンテンツ幅を超えて縮小でき、適切なテキスト折り返しとオーバーフロー処理が可能になります。
ユースケース
管理ダッシュボード、ドキュメントサイト、メールクライアント、または永続的なナビゲーションを持つアプリケーションに使用します。固定サイドバーはナビゲーションが常にアクセス可能であることを保証し、メインコンテンツエリアは利用可能な幅に適応します。