CSS | display:flexで横並びの個数を固定して折り返す方法
CSSのflexbox(display:flex)で横並びで個数を固定して折り返す方法を紹介しています。
See the Pen CSS flexbox Fix the number by yochans (@yochans) on CodePen.
display:flexで横並びの個数を固定して折り返す
flexbox(display:flex)で横並びの個数を固定して折り返すサンプルコードです。
上記サンプルのHTMLコードです。
こちらを利用して実装方法を紹介しています。
<div id="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
flexboxは個数を折返しまでの直接指定する事はできませんので、要素の横幅をパーセントで指定していく事で個数の固定化を実装します。
例えば、4つの要素毎に折り返す場合、25%を指定します。
#container {
display: flex; /* flexbox */
flex-wrap: wrap; /* 折返し指定 */
}
#container div {
width: 25%;
}
要素にmargin、paddingをpxで指定している場合はcalc()で差分を計算することで簡単に調整できます。
margin・paddingは左右にかかっていますので、数値を2倍で計算します。
#container {
display: flex; /* flexbox */
flex-wrap: wrap; /* 折返し指定 */
}
#container div {
width: calc(25% - 22px); /* margin padding分を引く */
margin: 1px;
padding: 10px;
color: #FFF;
background: #000;
}
要素間のスペースをgapで指定している場合も同様にcalc()で差分して指定する事が可能です。
#container {
display: flex; /* flexbox */
flex-wrap: wrap; /* 折返し指定 */
gap: 1px;
}
#container div {
width: calc(25% - 22px); /* gap padding分を引く */
padding: 10px;
color: #FFF;
background: #000;
}
モバイル表示で数を変更する
折返しまでの要素数で指定している場合、モバイルサイズだと表示が詰まり過ぎになる可能性があります。
その場合、画面幅の小さいデバイス向けにwidthやgapのサイズを変更します。
@media (max-width: 600px) {
width: calc(50% - 22px);
}
ディスカッション
コメント一覧
まだ、コメントがありません