2021.02.02

HTML・CSS

flex-growプロパティを利用した横並びのリスト

flex-growプロパティを利用して、左右にボーダーのある横並びのリストを作ります。リスト内のテキストの文字数が異なる場合でも、簡単にレスポンシブ対応できます。
デモページはこちら

まず、flex-growプロパティを利用せずに実現できるか試してみます。flexアイテムのwidthプロパティに文字数の比率で%を指定します。この場合、flexアイテムが意図した横幅になりません。

.list01 {
	display: flex;
	margin: 0 0 1em;
}
.list01 li {
	padding: 0 10px;
	text-align: center;
}
.list01 li:nth-child(1) {
	width: calc(100% / 15 * 3);
}
.list01 li:nth-child(2) {
	width: calc(100% / 15 * 4);
}
.list01 li:nth-child(3) {
	width: calc(100% / 15 * 6);
}
.list01 li:nth-child(4) {
	width: calc(100% / 15 * 2);
}

次に、flexアイテムの横幅の合計が100%になるように、flexアイテムにpadding: 0 7.6%;を指定します。この場合、画面がせまくなった時にflexアイテムのpaddingが意図した通りに縮みません。

.list02 {
	display: flex;
	margin: 0 0 1em;
}
.list02 li {
	padding: 0 7.6%;
	text-align: center;
}

次に、flexコンテナにjustify-content: space-around;を指定します。この場合、flexアイテムの横幅は伸びないため、liタグに設定したborderが意図した位置になりません。

.list03 {
	display: flex;
	justify-content: space-around;
	margin: 0 0 1em;
}
.list03 li {
	padding: 0 10px;
	text-align: center;
}

最後に、flexアイテムにflex-grow: 1;を指定します。flex-growプロパティの初期値は0ですが1にします。flex-growプロパティはflexコンテナの横幅に対してflexアイテムの横幅の合計が短くて余白がある場合、 指定に応じた比率でflexアイテムを自動的に引き伸ばして余白を埋めます。そのためflexアイテムに横幅を指定しなくても問題ありません。全てのflexアイテムのflex-growプロパティを1に設定することで、文字数に応じた横幅いっぱいの間隔に配置できます。

.list04 {
	display: flex;
	margin: 0 0 1em;
}
.list04 li {
	flex-grow: 1;
	padding: 0 10px;
	text-align: center;
}

関連記事

2025.08.08

HTML・CSS

fit-contentのセンタリングを利用した横幅可変のグラデーション背景

width: fit-contentを利用してテキストをセンタリングし、グラデーションの背景を表示します。デモページはこちら 以下のhtml構造で確認します。d…

2020.10.08

HTML・CSS

CSSのfilterプロパティの使用例

デモページはこちら CSSのfilterプロパティの使用例をまとめました。filterプロパティはIE11でサポート外ですが、種類が豊富で実装が簡単です。 ■ …

2024.09.25

HTML・CSS

marginの相殺について

兄弟要素と親子要素で発生するmarginの相殺について確認します。また相殺が発生しない例外についても確認します。デモページはこちら 共通のCSSは以下になります…

2024.09.02

HTML・CSS

box-shadowとfilter: drop-shadowの違い

box-shadowプロパティとfilterプロパティのdrop-shadowを比較して違いを確認します。デモページはこちら filter: drop-shad…

2022.09.29

HTML・CSS

positionプロパティとz-indexプロパティによる重なり

positionプロパティとz-indexプロパティによる重なりを確認します。デモページはこちら 以下のhtml構造で確認します。クラス名div-childのd…

上に戻る