ホームページ作成/画像の表示・活用 (HTML,CSS,JavaScript)

画像の下に謎の隙間ができるのを防ぐ方法(2ページ目)

背景色を付けたボックス内に画像を配置した際などに、画像の下に余計な空白が見えてしまうことがあります。この余白は、「画像の下端」が「文字のベースライン」に揃えて表示されることが原因です。CSSを使って「画像の下端」を「行の下端」に揃えるよう装飾すれば、謎の余計な隙間を消すことができます。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

なぜ、画像の下に謎の余白ができてしまうのか?

画像下の余白は、行内で「画像の下端」がどこに揃えられるのかの仕様が原因

画像下の余白は、行内で「画像の下端」がどこに揃えられるのかの仕様が原因

この「画像の下に見える余白」は、なぜできてしまうのでしょうか?その原因は、「画像の下端は、ベースラインに揃えて表示される」という仕様があるからです。

日本語文字の場合はどの文字も下端の位置は共通なので気にすることはありませんが、アルファベットでは下図のように「文字の下端」が異なります。

ベースラインの説明図

上図の赤色の線のことを「ベースライン」と呼びます。アルファベットの多くの文字は、このベースラインに下端が揃います。しかし、小文字の「g」や「j」や「y」などの一部の文字は、このベースラインよりも下に飛び出して表示されます。

画像の下端は、ベースラインに揃えて表示される仕様

行内に画像が表示される際は、「画像の下端」が「ベースライン」に揃うように配置される仕様になっています。この仕様のために、画像の下側に余白ができてしまうのです。

ベースラインに揃えられる画像の説明図

この「画像の下端をどこに揃えるか?」という装飾は、CSSのvertical-alignプロパティを使えば指定可能です。これは、「行の中での縦方向の位置」を指定するプロパティです。何も指定していない場合は、下記のように「baseline」を指定しているものとして解釈されます。
vertical-align: baseline; /* ベースラインに揃える */
この値を変えることで、画像を行内のどこに揃えて表示するのかを調整できます。値には、上記のbaselineのほかに、sub、super、text-top、text-bottom、top、middle、bottomや、数値・割合が指定できます。

画像の下に余白ができないようにするには?

画像の下にできる無駄な余白を消すには、画像が「ベースライン」ではなく「下端」に揃えられるようにすれば良いでしょう。それは、画像(img要素)に対してvertical-alignプロパティを適用することで実現できます。

下端に揃えられる画像の説明図

vertical-alignプロパティに指定できる値のうち、「下端」を示す値には次の2つがあります。「text-bottom」と「bottom」です。
img {
   /* ▼親要素のフォントの下端に揃える */
   vertical-align: text-bottom;
}
img {
   /* ▼行全体の下端に揃える */
   vertical-align: bottom;
}
先の図で示したように、「画像の下端」が「文字の下端」に揃えば余白は消えそうなので、値には「text-bottom」を指定すれば良い……と思えるかも知れませんが、必ずしもそうとは限りません。「文字の下端」に揃えるのでは、まだ下に余白が残ってしまう場合があります。

最後に次のページで、vertical-alignプロパティに値「text-bottom」を指定した場合と「bottom」を指定した場合の違いや、記述方法のまとめ、実際のブラウザで表示させた結果など、謎の余白を取り去る具体的な記述方法をご紹介致します。
  • 前のページへ
  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます