2014 年 9 月 1 日更新
最新のブラウザーでは、フレックスボックスがこれを行うための推奨される方法です。次のように簡単です。
ul {
display: flex;
}
ここで JSFiddle を参照してください。
従来のブラウザーのサポートについては、以下の他のオプションを参照してください。これらは、多少複雑ではありますが、問題ありません。
他の回答のそれぞれが少なくとも 1 つの適切な解決策を提供しますが、すべての可能性を提供するものはないようです。そして、それが私がここでやろうとしていることです。
まず、なぜ間隔があるのかという暗黙の質問に答えるために、インライン要素として表示するように LI を設定しているため、間隔があります。
inline
私が知っているすべてのブラウザで、テキストと画像のデフォルトの表示値です。インライン要素は、コードに空白がある場合は常に、それらの間にスペースを空けてレンダリングされます。これは、テキストに関しては良いことです。入力したこれらの単語は、コードに含まれているスペースのために間隔が空けられています。また、各行の間にスペースがあります。まさにこのインライン要素の動作こそが、Web 上のテキストをまったく読みやすくするものです。
しかし、この表示スタイルの他のプロパティをinline
利用するために、非テキスト要素が必要になる場合があります。これには通常、テキストとはまったく異なり、要素をぴったりと合わせたいという欲求が含まれます。そして、それがあなたの問題のようです。
これ以上苦労することなく、スペーシングを取り除くために私が知っているすべての方法を次に示します。
それらをインラインに保つ
(非推奨) LI に負のマージンを適用して、LI を移動します。
li { margin: -4px; }
スペースのサイズを「推測」する必要があることに注意してください。以下のコメントで Arthur が見事に指摘しているように、ユーザーはブラウザーのズームを変更でき、コードのレンダリングが台無しになる可能性が高いため、これはお勧めしません。さらに、このコードには当て推量と計算が多すぎます。すべての条件下で機能する、より優れたソリューションがあります。
空白を取り除く
<li>One</li><li>Two</li>
コメントを使用して空白をコメントにしますJSFiddle
<li>One</li><!--
--><li>Two</li>
終了タグをスキップ ( HTML4 有効/ HTML5 有効) JSFiddle
<li>One
<li>Two
タグ自体に空白を入れます (注: 初期の Internet Explorer はこれを好まないでしょう) 。
<li>One</li
><li>Two</li
>
要素間の間隔が親のフォント サイズのパーセンテージとして計算されるという事実を利用してください。したがって、親のフォント サイズを 0 に設定すると、スペースがなくなります。li
テキスト自体のフォント サイズがゼロ以外になるように、ゼロ以外のフォント サイズを設定することを忘れないでください。JSFiddle で表示します。
それらを浮かべる
代わりにそれらを浮かべてください。これを行う場合、おそらく親を clearfix したいと思うでしょう。
li { float: left; display: block; }