display:inline-blockで要素を並べた際に、隙間ができてしまう問題の解決方法

  • このエントリーをはてなブックマークに追加
inline-block

inline-blockって何かと便利です。

例えば、高さの違う要素をfloatで並ばせようとすると、カラム落ちしてレイアウトが崩れます。その際にinline-blockを使うとカラム落ちせずに並べることができるのです。
そんな便利なinline-blockですが、そのまま指定しただけでは、謎の隙間ができてしまうんですよね・・・

今回はその隙間を無くす方法をまとめました。

隙間を無くす方法

まず次のようなhtmlとCSSを用意しました。

◆html

◆CSS

これを使って無くす方法を説明していきます。

1.改行を無くす

◆html

改行を無くすだけで隙間が無くなります。なにこれ簡単。
かなり手っ取り早いですが、要素の中身が多くなればなるほど、コードが乱雑になり見にくくなります。
人によってはこの方法はあまり気持ちよくないかと思われます。

2.親要素のfont-sizeを0にする

◆CSS

要素を囲っているタグ(今回の場合はul)にfont-size:0を指定してあげると、隙間が無くなります。

その際の注意点ですが、要素のCSS(li)にfont-sizeを指定し直してあげて下さい。
忘れると当たり前ですが、文字が表示されなくなります。
私は過去に忘れたことがあり、文字何で表示されてないんだーっ!ってなりました。馬鹿です(笑)

3.親要素のletter-spacingにマイナスの値を設定する

◆CSS

要素を囲っているタグ(今回の場合はul)に、letter-spacingにマイナスの値を設定してあげて、隙間を無理やり詰めてしまう方法です。
要素タグ(li)には、letter-spacingの設定を通常に戻す設定をしてあげましょう。

まとめ

inline-blockは便利でよく使うからこそ、悩まれる方が多いと思います。ですが、+α加えるだけで問題が解決します。

色んな方法をご紹介しましたが、CSSの方法が一番良いかなと思います。ちなみに私が良く使用するのは、font-size:0にする方法です。letter-spacingにマイナスの値を設定する方法もよく使用しますが、サイトによって使い分けています。
ぜひお試しください!

  • このエントリーをはてなブックマークに追加