インラインブロックリストアイテムにスペースが含まれているのはなぜですか?リストアイテムをメニューにする方法に関係なく、常にスペースが確保されます。
li {
border: 1px solid black;
display: inline-block;
height: 25px;
list-style-type: none;
text-align: center;
width: 50px;
}
ul {
padding: 0;
}
<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
私はこれを見て、それに答えました:
さらなる研究 の後、inline-block
は空白に依存するメソッドであり、フォント設定に依存していることを発見しました。この場合、4pxがレンダリングされます。
これを避けるには、すべてのli
sを一緒に1行で実行するか、次のように終了タグと開始タグを一緒にブロックします。
<ul> <li> <div>first</div> </li><li> <div>first</div> </li><li> <div>first</div> </li><li> <div>first</div> </li> </ul>
ここの例 。
他の回答とコメントで述べたように、これを解決するためのベストプラクティスは、font-size: 0;
を親要素に追加することです。
ul {
font-size: 0;
}
ul li {
font-size: 14px;
display: inline-block;
}
これは、HTMLの読みやすさ(タグを一緒に実行するなどを回避する)に適しています。間隔効果はフォントの間隔設定によるものであるため、インライン要素に対しては間隔をリセットし、その中のコンテンツに対しては再度設定する必要があります。
溶液:
ul {
font-size: 0;
}
ul li {
font-size: 14px;
display: inline-block;
}
親フォントサイズを0に設定する必要があります
下に示すように、フロートのCSSプロパティを左に追加します。それは余分なスペースを取り除きます。
ul li {
float:left;
}
実際、これはdisplay:inline-block
に固有のものではなく、display:inline
にも適用されます。したがって、DavidHorákのソリューションに加えて、これも機能します。
ul {
font-size: 0;
}
ul li {
font-size: 14px;
display: inline;
}
Gerbus 'solution に似た別のソリューションですが、これは相対的なフォントサイズ設定でも機能します。
ul {
letter-spacing: -1em; /* Effectively collapses white-space */
}
ul li {
display: inline;
letter-spacing: normal; /* Reset letter-spacing to normal value */
}
私は同じ問題を抱えていました。メニューでインラインブロックを使用したとき、各「li」の間にスペースがあり、簡単な解決策を見つけました、どこで見つけたのか覚えていません、とにかくここで私がやったことです。
<li><a href="index.html" title="home" class="active">Home</a></li><!---->
<li><a href="news.html" title="news">News</a></li><!---->
<li><a href="about.html" title="about">About Us</a></li><!---->
<li><a href="contact.html" title="contact">Contact Us</a></li>
コメント記号を各末尾と先頭の間に追加します: "li"その後、水平方向のスペースが消えます。質問への回答ありがとうございます
あなたのhtmlコードでli間の区切りを削除するだけです... liを1行だけにしてください。
inline-block
ベースではない場合でも、このソリューションは検討する価値があるかもしれません(上位レベルからのほぼ同じフォーマット制御が可能です)。
ul {
display: table;
}
ul li {
display: table-cell;
}
</li><li>
を接着する必要はありません)