We are ACORN!

プログラムやサーバーの設定など、技術的な記事を載せております。

HTMLコーディング プログラミング

画像の下に空く謎の隙間

投稿日:

HTMLのコーディングをしていると、画像の下に隙間が空いていることに気づくことはありませんか?
対処方法は知ってはいても、なぜ隙間が空くのか考えてみると面白いです。

画像の下に隙間が空く

事例:
https://jsbin.com/nimedav/edit?html,css,output

divの中にimgが入っていて、divの内部は100pxの大きさがあります。
そしてこの画像は正方形なので、隙間ができるはずがないように思えます。

でも実際は以下のように下に隙間が出てしまいます。

これを対処する方法はいくつかあります。

(1)
imgタグにvertical-align: topvertical-align: bottomを付けます。

(2)
imgタグをdisplay: blockでブロック要素に変えます。

なぜ画像の下に隙間が空く?

imginline-blockのような振る舞いをします。
つまり文字と横並びになります。

そうすると、以下のように画像と文字が横に並びます。

この時注目するのは、画像の下の余白とgの文字の下のでっぱり部分です。
abcと違ってgは下に出っ張ります。そのための余白が文字の下にあらかじめ設けられているわけです。

これは画像にも影響します。
なぜならvertical-align(行ボックスの中でインラインやインラインブロックの垂直方向配置方法)がbaselineになっていて、それはinline-blockにも影響を与えるからです。

よって、画像に対してvertical-align: topvertical-align: bottomを設定することでbaselineから生まれる隙間が無くなるわけです。

同様にimgdisplay: blockにしてしまえば、vertical-alignの影響は受けないので、隙間が無くなります。

 

調べてそのまま使うのもいいんですが、こうして仕組みを知っておくなら、vertical-alignを少し理解でき適切に利用することができるでしょうね。

-HTMLコーディング, プログラミング


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

WordPressのメインループ&サブループ

WordPressのテンプレートを作っていると、ループの構造で混乱してくる人がいます。 ですので、不要なHTMLを除いた、単純な構造を書いておこうと思います。 解説はコメントに書いています。 < …

BEMを使ってコーディングする

様々なクラス名の名づけルールがありますが、その中でもBEMはコンポーネント化のしやすさや、詳細度によるミスがないことなど、いくつか利点があります。

Google Bookmarksを利用するChrome拡張機能

暇なときにGoogle Bookmarksを利用するプラグインを作ってみました。 最低限のことしか出来ないのですが、自分で使う分にはこれで必要十分です。 Gブックマーク もしよろしかったら使ってみてく …

【PHP】ビルトインウェブサーバーで楽々テスト環境

teratailで質問に答えるようになったら、以外にサーバー立てずにテストして、ローカル制限に引っかかっている人が多いので、簡単に立てられるローカルサーバーの構築方法を書いておこうと思います。 まず、 …

【PHP】DBライブラリ 「idiorm」

フレームワークを使うには簡単すぎる、かといってPDOを使ってガリガリ書くのは面倒。 そんな時に役立つライブラリが「idiorm」です。(なんて読むんでしょうか?) GitHubで公開しています。 ht …