flex-basis height: Flexboxで高さを制御する際に理解すべきポイント
flex-basis で height を制御するメカニズム
width との違い
パーセント値指定時の注意点
コンテンツ量が多い場合の挙動
flex-basis height と関連プロパティの連携
flex-grow : フレックスコンテナに余白がある場合、フレックスアイテムの高さをどの程度拡大するかを指定します。デフォルト値は 0 です。flex-grow: 1; と指定すると、余白を均等に分配して各アイテムの高さが拡大します。flex-shrink : フレックスコンテナに余白がない場合、フレックスアイテムの高さをどの程度縮小するかを指定します。デフォルト値は 1 です。flex-shrink: 0; と指定すると、アイテムは縮小しません。
flex-basis height を活用した実践例
<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
.container {
display: flex;
flex-direction: column;
height: 300px; /* 親要素の高さを指定 */
}
.item {
flex-basis: calc(100% / 3); /* 高さを1/3に設定 */
flex-grow: 0; /* 拡大を防ぐ */
flex-shrink: 0; /* 縮小を防ぐ */
box-sizing: border-box; /* paddingとborderを含める */
}
.container {
display: flex;
flex-direction: column;
height: 300px; /* 親要素の高さを指定 */
}
.item {
flex-basis: calc(100% / 3); /* 高さを1/3に設定 */
flex-grow: 0; /* 拡大を防ぐ */
flex-shrink: 0; /* 縮小を防ぐ */
box-sizing: border-box; /* paddingとborderを含める */
}
まとめ
参考文献: MDN Web Docs: flex-basis
Q&A
- Q1: flex-basisとwidthの違いは?
A1: flex-basisはフレックスアイテムの初期サイズを決定しますが、widthはブロック要素の幅を直接指定します。 - Q2: flex-basisを設定しない場合どうなる?
A2: flex-basisを設定しない場合、デフォルトでautoが適用され、要素はコンテンツの幅に基づいたサイズになります。 - Q3: flex-basisの値に百分率を使えますか?
A3: はい、flex-basisには百分率を使用して、フレックスコンテナに対する相対的なサイズを指定できます。
その他の参考記事:flex-basis