flexboxで内部のブロック列を折り返す - CSS

flexboxで内部のブロック列を折り返すコードを紹介します。

概要

flexboxで内部のブロック列を折り返すには、flex-wrap プロパティを利用します。

書式

flex-wrap: (折り返しモード);
折り返しモードには次の値を設定できます。

意味
wrap外側の枠の幅に応じて、折り返して表示します。
wrap-reverse外側の枠の幅に応じて、折り返して表示しますが、逆順に表示します。
nowrap折り返しをせずに1行で表示します。

プログラム例

コード

下記のHTML, CSSファイルを作成します。
FlexboxWrap.html
<!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>
FlexboxWrap.css
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を指定した場合、内部のブロックは折り返されずに表示されます。

このページのキーワード
  • CSS flexbox 折り返す
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2021-09-30
iPentec all rights reserverd.