CSS display:flexで縦並びにする方法4選
「パスコン版で横並べにした要素をスマホ版で縦並びにしたい」
「上下中央寄せのためにdisplay:flexを使ったが子要素を縦並びにしたい」
というあなたへCSS display:flexで縦並びにする方法を4種類解説します。
目次
方法1.flex-direction:columnを指定する
flex-directionはflexを指定した要素内の並びの向きを指定するCSSです。display:flexを指定した要素に合わせて指定します。
<style>
.exampleflex{
display: flex;
/*コレ*/flex-direction:column;
}
.exampleflex>div{
padding: 10px;
margin: 5px;
background: #41538e;
color: #FFF;
font-weight: bold;
width: 2em;
text-align: center;
}
</style>
<div class="exampleflex">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
横の位置調整はalign-items
align-itemsは普段は縦の位置調整ですが、flex-directionで要素を縦並べにしているときは横の位置調整となります。
flex-directionは軸の向きが変わるためalign-itemsも向きが変わるのです。
<style>
.exampleflex-align{
display: flex;
flex-direction:column;
/*コレ*/align-items: center;
height: 300px;
border: 1px solid #999;
background: #f2f2f2;
}
.exampleflex-align>div{
padding: 10px;
margin: 5px;
background: #41538e;
color: #FFF;
font-weight: bold;
width: 2em;
text-align: center;
}
</style>
<div class="exampleflex-align">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
縦の位置調整はjustify-content
justify-contentは普段は横の位置調整ですが、flex-directionで要素を縦並べにしているときは縦の位置調整となります。
flex-directionは軸の向きが変わるためjustify-contentも向きが変わるのです。
<style>
.exampleflex-justify{
display: flex;
flex-direction:column;
/*コレ*/justify-content: center;
height: 300px;
border: 1px solid #999;
background: #f2f2f2;
}
.exampleflex-justify>div{
padding: 10px;
margin: 5px;
background: #41538e;
color: #FFF;
font-weight: bold;
width: 2em;
text-align: center;
}
</style>
<div class="exampleflex-justify">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
CSSやhtmlの基本をしっかり理解すると、この記事の内容もより理解できるようになりますよ。
↓CSSやhtmlを楽しく学べるようにマンガを描きましたのでゼヒご覧ください↓
↑「副業してもう少し稼ぎたい!」というかたのために副業の方法も解説しています。
方法2.flex-wrap:wrap かつ子要素width:100%
<style>
.exampleflex2{
display: flex;
/*コレ*/flex-wrap:wrap;
}
.exampleflex2>div{
/*コレ*/width: 100%;
box-sizing: border-box;
margin: 5px 0;
padding: 10px;
margin: 5px;
background: #41538e;
color: #FFF;
font-weight: bold;
text-align: center;
}
</style>
<div class="exampleflex2">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
flex-wrap:wrapはdisplay:flexの折り返しを許可するCSSです。
初期値はflex-wrap:nowrapであり、折り返しが許可されていません。
flex-wrap:wrapをdisplay:flexを指定した要素に合わせて指定します。
折り返しを許可しただけではまだ横並びのままです。
子要素のwidthを100%にします。これにより折り返しされ縦並びとなります。
※marginやpaddingに合わせてwidthがはみ出ないように調整しましょう。
方法3.divなどで囲む
display:flexによって横並びするのは子要素だけで孫要素には影響ありません。
縦並びしたい要素をdivなどで囲むことでflexの影響を受けないようにできます。
<style>
.exampleflex3{
display: flex;
}
.exampleflex3>div>div{
padding: 10px;
margin: 5px;
background: #41538e;
color: #FFF;
font-weight: bold;
width: 2em;
text-align: center;
}
</style>
<div class="exampleflex3">
<div>
<div>1</div>
<div>2</div>
<div>3</div>
</div>
</div>
方法4.display:blockにする
display:flexでなくてもいいから縦並べになればいいのであれば、display:flexを指定した要素にdisplay:blockを上書きで指定し、display:flexを解除してしまう方法もあります。
<style>
.exampleflex4{
display: flex;
/*コレ*/display: block;
}
.exampleflex4>div{
padding: 10px;
margin: 5px;
background: #41538e;
color: #FFF;
font-weight: bold;
width: 2em;
text-align: center;
}
</style>
<div class="exampleflex4">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
display:flexを解除する方法は下記を参考にしてください。
まとめ
方法1.flex-direction:columnを指定する
display:flexの要素を上から下へ並べるCSSです。
方法2.flex-wrap:wrap かつ子要素width:100%
折り返しできるようにしたうえで折り返しさせる幅にします。
方法3.divなどで囲む
縦並びしたい要素をdivなどで囲み、flexの影響を受けないようにします。
方法4.display:blockにする
display:flexを解除し横並べさせないようにします。
以上、CSS display:flexで縦並びにする方法でした。
「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。