CSSで要素の横並びを実現する手法の1つとして、「display:inline-block;」を使う方法があります。
例えば、以下のようなHTMLがあったとします。
<ul> <li>リスト1</li> <li>リスト2</li> <li>リスト3</li> </ul>
CSS側は以下のように指定すれば、簡単にリストを横並びにすることができます。
li { display: inline-block; }
ですが、単純にdisplay:inline-block;を指定しただけでは、要素と要素の間に微妙な隙間(余白)ができてしまいます。要素を横並びにしつつ、きっちりと隙間なく配置したい場合もあるかと思いますので、display:inline-block;によってできた隙間をなくす方法を紹介いたします。
なお、3つのやり方がありますので、好きな方法で対処してください。
display:inline-block;でできた隙間(余白)をなくす3つの方法
HTMLの改行をなくす
1つ目の方法は、HTML側の改行をなくすという方法です。以下のようにHTMLの改行をなくしてあげれば、display:inline-block;を指定した場合も隙間はできません。
<ul><li>リスト1</li><li>リスト2</li><li>リスト3</li></ul>
一番簡単な方法ではありますが、コードが読みにくくなるのが難点です。
親要素のletter-spacingにマイナス値を指定する
2つ目の方法は、親要素のletter-spacingにマイナス値を指定する方法です。以下のように、親要素のletter-spacingにマイナスの値を指定し、子要素ではletter-spacingをnormalに戻します。
ul { letter-spacing: -0.3em; } li { display: inline-block; letter-spacing: normal; }
親要素のfont-sizeを0にする
親要素のfont-sizeを0にすることでも、隙間をなくすことができます。letter-spacingと同様に、子要素ではfont-sizeを通常の値で指定する必要があります。
ul { font-size: 0; } li { display: inline-block; font-size: 14px; }
あとがき
隙間なく要素を横並びにしたい時は、ぜひ参考にしてください。
ちなみに、最近はFlexboxの方が、隙間もできなくて簡単に横並びにできるので、Flexboxをよく使うようになりました。