浪人のサムライ

TOP

flexで下のコンテンツにのgapを効かせる方法

横並びするさいに、Flexを使えば簡単です。間隔はgapでできますが、下にgapが効かないことがあります。そのような場合の対応です。完成はこちら。

完成系

ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。

ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。

HTML



<div class="g-box">
<div class="g-box__item">
<figure><img src="images/cloud.JPG"></figure>
<p>ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。</p>
</div>

<div class="g-box__item">
<figure><img src="images/sakura.JPG"></figure>
<p>ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。</p>
</div>

</div>


.g-boxでitemを囲んでいます。名前は自由です。分かりやすい名前にしましょう。囲むのがポイントです。

SCSS



.g-box{
display: flex;
flex-direction: column;
gap:20px;

&__item{
display: flex;
flex-direction: row;
gap: 10px;
figure{
width: 30%;
}
}
}


親要素にflexとflex-direction: columnを書きます。flex-direction: columnは縦に並べるモノです。あとは、gapで間隔を書きます。

ここでは20pxですね。

そのあと、itemに対して、flexを書きます。このままだと、縦方向のになるので、flex-direction: rowを書きます。画像と文字の間の間隔に、またもやgapを書きます。

g-boxにgapを書いていますが、item内に適用されるのは、横方向のみです。そこで、g-boxに、display:flexと、flex-direction: columnを書きます。

これで完成です。itemの下にgapが効く感じになります。

CSS


.g-box {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.g-box__item {
  display: flex;
  flex-direction: row;
  gap: 10px;
}
.g-box__item figure {
  width: 30%;
}

SCSSをCSSにしただけです。下線は2つです。

さいごに

長年の悩みがなくなりました。簡単に言うと、親要素にflexと、flex-direction: columnを書く。そして、gapを指定する。これで解決できます。

正解は1つじゃないので、1つの方法です。最も簡単なのは、itemに対して、margin-bottommを書く。これが単純ですね。最適な方法でHTMLコーディングをしましょう。