【CSS】flexboxで実現する固定幅と可変幅の横並びレイアウト

flexboxは、CSSのレイアウト機能の中でも非常に強力で、柔軟な配置を可能にします。特に、固定幅と可変幅の要素を横並びに配置する際に役立ちます。この記事では、flexboxを使って固定幅と可変幅の要素を横並びにする方法について、具体的なコード例とともに解説します。

基本のレイアウト

まず、flexboxを使用するためには、コンテナ要素にdisplay: flex;を適用します。これにより、コンテナ内の子要素が横並びになります。以下に、その基本的な設定を示します。

<div class="container">
  <div class="fixed-width">固定幅</div>
  <div class="flexible-width">幅可変</div>
</div>
.container {
  display: flex;
}

固定幅の要素

固定幅の要素には、明確に幅を指定します。例えば、width: 200px;と設定することで、固定された幅を持つ要素が作成できます。以下にそのCSSコードを示します。

.fixed-width {
  width: 200px;
  background-color: #f0f0f0; /* 固定幅の背景色 */
  border: 2px solid #666; /* 固定幅のボーダー */
  padding: 10px;
  box-sizing: border-box; /* ボーダーとパディングを含む幅を指定 */
}

可変幅の要素

可変幅の要素には、flex-grow: 1;を指定することで、利用可能なスペースをすべて埋めるように設定します。これにより、残りのスペースが動的に調整されます。

.flexible-width {
  flex-grow: 1;
  background-color: #c0c0f0; /* 幅可変の背景色 */
  border: 2px solid #666; /* 幅可変のボーダー */
  padding: 10px;
  box-sizing: border-box; /* ボーダーとパディングを含む幅を指定 */
}

完成したコード

これで、固定幅と可変幅の要素が横並びに配置されるレイアウトが完成しました。全体のコードは以下のようになります。

<div class="container">
  <div class="fixed-width">固定幅</div>
  <div class="flexible-width">幅可変</div>
</div>
.container {
  display: flex;
  border: 2px solid #333; /* コンテナのボーダー */
  padding: 10px;
  gap: 10px; /* 要素間のスペース */
}

.fixed-width {
  width: 200px;
  background-color: #f0f0f0; /* 固定幅の背景色 */
  border: 2px solid #666; /* 固定幅のボーダー */
  padding: 10px;
  box-sizing: border-box; /* ボーダーとパディングを含む幅を指定 */
}

.flexible-width {
  flex-grow: 1;
  background-color: #c0c0f0; /* 幅可変の背景色 */
  border: 2px solid #666; /* 幅可変のボーダー */
  padding: 10px;
  box-sizing: border-box; /* ボーダーとパディングを含む幅を指定 */
}
固定幅
幅可変

まとめ

flexboxを使えば、簡単に固定幅と可変幅の要素を横並びに配置することができます。これにより、レスポンシブデザインや動的なレイアウトが簡単に実現できるようになります。