flexの子要素の幅指定

1. flex: 0 0 40%;

この設定は、子要素の幅を正確に40%に固定します。flex-growflex-shrinkが0に設定されているため、子要素は拡大も縮小もしません。

.child-1 {
  flex: 0 0 40%; /* flex-grow: 0, flex-shrink: 0, flex-basis: 40% */
}

2. flex: 4;

この設定は、Flexboxコンテナ内での割合を指定する方法です。この場合、flex-growが4に設定され、他の子要素と相対的な割合でスペースを占めます。

.child-1 {
  flex: 4; /* flex-grow: 4, flex-shrink: 1, flex-basis: 0% */
}
.child-2 {
  flex: 6; /* flex-grow: 6, flex-shrink: 1, flex-basis: 0% */
}

この場合、.child-1.child-2の合計割合は4 + 6 = 10となり、それぞれ40%と60%の割合になります。

3. flex-basis: 40%;

この設定は、子要素の初期サイズを40%に設定します。flex-growflex-shrinkのデフォルト値は1なので、コンテナ内でのスペース配分によって拡大や縮小が行われます。

.child-1 {
  flex-basis: 40%; /* 初期サイズを40%に設定 */
}
.child-2 {
  flex-basis: 60%; /* 初期サイズを60%に設定 */
}

ただし、flex-growflex-shrinkがデフォルトのままの場合、他の要素のサイズによってはこれらの要素が拡大または縮小することがあります。

まとめ

  • 正確な幅の固定: flex: 0 0 40%; は、子要素の幅を正確に固定したい場合に使います。
  • 相対的な割合の設定: flex: 4; は、複数の子要素の間で相対的な割合を設定したい場合に使います。
  • 初期サイズの設定: flex-basis: 40%; は、子要素の初期サイズを設定し、他の要素と一緒に拡大や縮小させたい場合に使います。

適切な方法を選んで、必要なレイアウトを実現してください。