• Facebook
  • Twitter
  • RSS
月別
コツコツあつめるWeb作りのためのたね たねっぱ!Web系情報ブログ Webのお役立ちネタ配信中!

vertical-align:middleが下に微妙にずれる問題

投稿者アイコン
2015/07/27
書いた人:
tanippa!
カテゴリ:
CSS
タグ
25,164 views

アイコン付きのテキスト等で、vertical-align:middleを中央揃えの為に使用すると微妙に下にずれてしまうことが頻繁にあります。この原因に関して今回はご紹介したいと思います。

vertical-align:middleが下に微妙にずれる問題

アイコン付きのテキスト等で、vertical-align:middleを中央揃えの為に使用すると微妙に下にずれてしまうことが頻繁にあります。

この原因に関して今回はご紹介したいと思います。

vertical-align:middleの下ズレ問題

例えばこのようなコードを書いたとします。

<style>
  .txt {
    background: gray;
    font-size: 100px;
    line-height: 1.0;
  }
  img.icn {
    vertical-align: middle;
  }
</style>
<!-- icn.pngは10px四方の黒いボックス画像 -->
<p class="txt"><img src="./icn.png" class="icn">テキスト</p>

結果はこのようになります。

スクリーンショット 2015-07-10 18.25.11

画像がすごい下にずれていますね。

実はこれはバグでもなんでもなく、vertical-align:middleの仕様です。

MDNによるとvertical-align:middleの動作は

> 要素の middle を親要素の小文字の middle に揃えます。

と書かれています。

つまり、親要素全体の中央ではなく、小文字の中央に揃えてしまうんですね。

実際に小文字を入力した場合の例が下の画像です。

スクリーンショット 2015-07-10 18.23.08

丁度中央にそろってますね。

フォントサイズが小さかったり、多少画像が下にずれてしまっても問題ない時は気にならないのですが、今回のようにフォントサイズが大きかったりする場合はかなり気になってしまいます。

なので、基本的に自分は以下のように背景画像として指定しています。

<style>
  .txt {
    font-size: 100px;
    line-height: 1.0;
    background: gray url(./icn.png) left center no-repeat;
    padding-left: 15px;
  }
</style>
<p class="txt">XXX</p>

このようにすれば、下画像のように文字の丁度中央に揃えられます。

スクリーンショット 2015-07-10 18.25.52

以上

vertical-alignは簡単なようでかなり複雑なプロパティなので、自分もまだ理解しきっていない部分が多いです。もっと勉強しないといけないですね…

以上、たにっぱでした〜


この記事を読んだ人はこんな記事も読んでいます