flexboxで内部のブロック列を折り返す - CSS
flexboxで内部のブロック列を折り返すコードを紹介します。
概要
flexboxで内部のブロック列を折り返すには、
flex-wrap
プロパティを利用します。
書式
折り返しモードには次の値を設定できます。
値 | 意味 |
wrap | 外側の枠の幅に応じて、折り返して表示します。 |
wrap-reverse | 外側の枠の幅に応じて、折り返して表示しますが、逆順に表示します。 |
nowrap | 折り返しをせずに1行で表示します。 |
プログラム例
コード
下記のHTML, CSSファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="FlexboxWrap.css" />
</head>
<body>
<div class="Frame">
<div class="ContentTile">
<div class="ContentTileImage"><img src="image.png" /></div>
<div>テスト1です。ペンギンがぺんぎんクッキーをぱくぱく、ぺくぺく食べるよ。</div>
</div>
<div class="ContentTile">
<div class="ContentTileImage"><img src="image.png" /></div>
<div>テスト2です。ペンギンがぺんぎんクッキーをぱくぱく、ぺくぺく食べるよ。</div>
</div>
<div class="ContentTile">
<div class="ContentTileImage"><img src="image.png" /></div>
<div>テスト3です。ペンギンがぺんぎんクッキーをぱくぱく、ぺくぺく食べるよ。</div>
</div>
<div class="ContentTile">
<div class="ContentTileImage"><img src="image.png" /></div>
<div>テスト4です。ペンギンがぺんぎんクッキーをぱくぱく、ぺくぺく食べるよ。</div>
</div>
<div class="ContentTile">
<div class="ContentTileImage"><img src="image.png" /></div>
<div>テスト5です。ペンギンがぺんぎんクッキーをぱくぱく、ぺくぺく食べるよ。</div>
</div>
<div class="ContentTile">
<div class="ContentTileImage"><img src="image.png" /></div>
<div>テスト6です。ペンギンがぺんぎんクッキーをぱくぱく、ぺくぺく食べるよ。</div>
</div>
<div class="ContentTile">
<div class="ContentTileImage"><img src="image.png" /></div>
<div>テスト7です。ペンギンがぺんぎんクッキーをぱくぱく、ぺくぺく食べるよ。</div>
</div>
<div class="ContentTile">
<div class="ContentTileImage"><img src="image.png" /></div>
<div>テスト8です。ペンギンがぺんぎんクッキーをぱくぱく、ぺくぺく食べるよ。</div>
</div>
</div>
</body>
</html>
body {
background-color:#C0C0C0;
}
.Frame {
display: flex;
background-color: #E0E0E0;
flex-wrap:wrap;
}
.ContentTile {
width: 240px;
background-color: #FFFFFF;
margin-top: 2rem;
margin-bottom: 2rem;
margin-left: 2rem;
margin-right: 2rem;
padding:0.5rem 0.5rem 0.5rem 0.5rem;
}
.ContentTileImage {
text-align: center;
margin-left: auto;
margin-right: auto;
width: 120px;
}
.ContentTileImage img {
width:100%;
}
実行結果
上記のHTMLファイルをWebブラウザで表示します。Webブラウザのウィンドウ幅が広い場合は、
内部のブロックは横一列に表示されます。
ウィンドウ幅を狭めます。枠が1行に入らなくなると、一番際のブロックが折り返されて下に表示されます。
さらにウィンドウ幅を狭めると、1つずつブロックが折り返されて、下に表示されます。
ウィンドウ幅を狭めると、縦に並ぶ状態になります。
wrap-reverse の動作
flex-wrapの設定を
wrap-reverse
にした場合は下図の動作となります。
ウィンドウ幅が広い場合は、横一列に表示されます。
ウィンドウ幅を狭め、内部のブロックが収まらなくなると、最後の項目が上に表示されます。
さらに幅を狭めると、入らなくなったブロックが一つずつ上の行に移ります。
一番狭くなった場合、縦一列に元の並びと逆順に表示されます。
nowrapの動作
flex-wrapの設定を
nowrap
にした場合は下図の動作となります。
ウィンドウ幅が広い場合は、横一列に表示されます。この場合は他の設定と同様の表示です。
ウィンドウ幅を狭めると、ウィンドウ幅に合わせて内部のブロックの幅も狭まります。
内部のブロックの幅が最小になった状態です。ブロック内に画像が表示されているため、これ以上ブロックの幅は縮まりません。
さらにウィンドウ幅が狭まると、横スクロールバーが表示されます。
ウィンドウ幅が最小になった状態です。
nowrapを指定した場合、内部のブロックは折り返されずに表示されます。
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。