これは初心者あるあるだと思いますが、imgタグで画像を表示したら以下のように画像の下に謎の余白が出来ていることがあります(分かりやすくするために背景に色を付けています)
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
今回はその原因と余白を消す方法を解説します。
(有料になっていたらすいません🙇♂️)
画像(imgタグ)の下に余白が出来る原因と消す方法
まず冒頭のデモのHTMLはこちらになります。
<div class="sample-img">
<img src="画像パス" alt="" />
</div>
そして画像下に余白が出来る原因は以下の2つです。
- imgタグがインライン要素
- インライン要素の初期値であるvertical-align: baseline;
imgタグにプロパティを追加
根本的な原因はvertical-align: baseline;
ですが、インライン要素の初期値なので対処方法は以下になります。
- imgタグをブロック要素にする → vertical-alignが無効になる
- vertical-alignをbaseline以外のtop、middle、bottomにする
vertical-align
はインライン要素にしか使えないので、imgタグをブロック要素にすれば自動的にvertical-align
は無効となり余白も消えます。
もしくはvertical-align
の値を変えればOKです。
これはimgタグに対して書くので、以下のようになります。
/* ブロック要素にする */
img {
display: block;
}
/* vertical-alignを変える */
img {
vertical-align: top;
}
img {
vertical-align: middle;
}
img {
vertical-align: bottom;
}
imgタグの親要素にプロパティを追加
その他の対処方法もあります。
- 親要素を
line-height: 0;
にする - 親要素を
font-size: 0;
にする
これは親要素に対してなので、以下のように書きます。
.sample-img {
line-height: 0;
}
.sample-img {
font-size: 0;
}
この場合は子要素への影響も考慮しないといけないのでご注意下さい。
まとめ
今回は画像(imgタグ)の下に余白が出来る原因と消す方法について解説しました。
私はimgタグに対してdisplay: block;
を書く方法を使っていますが、これをリセットCSSなどに書いて全てのimgタグに適用していると、どこかで上手く実装できないことも稀にあるので覚えておきましょう。
以上になります。