定番
新着
履歴

CSS3 flexを使った配置2(要素の改行)

CSS3 flexを使った配置2(要素の改行)

以前掲載した、flexでシンプルに横に並べるサンプルに続き、子要素の数が多くなった時の応用編です。

まずは共通のスタイルを用意します。

<style>
.demo_box{
	background: #AAA;
	height: 210px;
	max-width:400px;
	margin:0 0 10px;
	overflow: hidden;
}
.demo_item {
	background: #FFF;
	width: 80px;
	height: 80px;
	margin: 0px;
	box-sizing: border-box;
	border:solid 1px #999;
	font-size: 30px;
	line-height: 68px;
	text-align: center;
}
</style>

まず、要素が増えても、改行をしないパターン

A
B
C
D
E
F
G
H
<style>
.flex_box1{
	display: flex;
	flex-wrap: nowrap;
}
</style>

<div class="flex_box1 demo_box">
	<div class="demo_item">A</div>
	<div class="demo_item">B</div>
	<div class="demo_item">C</div>
	<div class="demo_item">D</div>
	<div class="demo_item">E</div>
	<div class="demo_item">F</div>
	<div class="demo_item">G</div>
	<div class="demo_item">H</div>
</div>

この場合は子要素の合計が親要素を超えると、横幅していが無視されて縮まります。


横に並べて、改行するパターン

A
B
C
D
E
F
G
H
<style>
.flex_box2{
	display: flex;
	flex-wrap: wrap;
}
</style>

<div class="flex_box2 demo_box">
	<div class="demo_item">A</div>
	<div class="demo_item">B</div>
	<div class="demo_item">C</div>
	<div class="demo_item">D</div>
	<div class="demo_item">E</div>
	<div class="demo_item">F</div>
	<div class="demo_item">G</div>
	<div class="demo_item">H</div>
</div>

この場合は子要素の合計が親要素を超えると改行されます


次は要素同士の間にうまいこと等間隔にスペースを入れます。

A
B
C
D
<style>
.flex_box3{
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
}
</style>

<div class="flex_box3 demo_box">
	<div class="demo_item">A</div>
	<div class="demo_item">B</div>
	<div class="demo_item">C</div>
	<div class="demo_item">D</div>
</div>

これは確かに便利そうです。

ただし、要素の個数が増えるとイメージと違いました。

A
B
C
D
E
F
G
H

確かに左右対称でうまいこと並んでいるのですが、そうではない感じがあります。


次は各要素の両サイドに一定のスペースを入れます。

A
B
C
D
<style>
.flex_box4{
	display: flex;
	justify-content: space-around;
	flex-wrap: wrap;
}
</style>

<div class="flex_box4 demo_box">
	<div class="demo_item">A</div>
	<div class="demo_item">B</div>
	<div class="demo_item">C</div>
	<div class="demo_item">D</div>
	<div class="demo_item">E</div>
	<div class="demo_item">F</div>
	<div class="demo_item">G</div>
	<div class="demo_item">H</div>
</div>

最初と最後にも余白がはいるので、若干ゆとりを感じます。

こちらのサンプルも要素が増えると次のようになります。

A
B
C
D
E
F
G
H

おそらく親要素に入るだけ入れることが優先され、余白ができる行には余白が分配されるようです。

うまく使い分けるには工夫が必要そうです。

2018-09-05 18:58:21
このページの二次元コード

関連するサンプル

人気記事ランキング

© 2018 kipure
Top