如何删除列表项目之间的空间
这个问题在这里已经有了答案:
2014年9月1日更新
在现代浏览器中,弹性盒是这样做的首选方法。 这很简单:
ul {
display: flex;
}
在这里看到一个JSFiddle 。
对于传统浏览器支持,请参考下面的其他选项,虽然稍微复杂一点,但仍然很好。
尽管其他每个答案都至少提供了一个好的解决方案,但似乎没有提供所有的可能性。 这就是我在这里要做的。
首先,为了回答你为什么有间距的隐含问题,它就在那里,因为你已经将你的LI设置为内联元素。
inline
是我知道的所有浏览器中文本和图像的默认显示值。 只要代码中有空白,内联元素就会以它们之间的间距呈现。 当涉及到文本时,这是一件好事:由于我包含在代码中的空间,因此我键入的这些单词间隔开。 每条线之间也有空间。 正是内嵌元素的这种行为使网络上的文本完全可读。
但有时我们希望非文本元素inline
以利用此显示样式的其他属性。 这通常包括对我们的元素紧贴在一起的渴望,非常不同于文本。 这似乎是你的问题。
毫不迟疑,以下是我所知道的摆脱间距的所有方法:
保持内联
(不推荐)对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上查看。
浮动它们
代之以浮动它们。 如果你这样做,你可能会想要清除父母。
li { float: left; display: block; }
令人难以置信但这里没有人为这个问题提供了适当的解决方案。
只要这样做:
ul.frames {
font-size: 0;
}
ul.frames li {
font-size: 14px; font-size:1.4rem;
display: inline;
}
请记住,我们并不总是有权修改标记。 当解决方案只有两种font-size
属性时,尝试用JavaScript从<li>
删除空格将是完全没有必要的。
另外,浮动<li>
引入另一个潜在问题:您无法将中心对齐列表项目。
如果你尝试做float:right;
在<li>
上,它们的顺序将被交换,这意味着:列表中的第一项将是最后一项,第二项是最后一项,以此类推。
在SO中查看这个其他帖子:内嵌块列表项之间的空间
你应该像这样删除ul标签中的所有空格:http://jsfiddle.net/dFRYL/3/
由于<li>
元素是内联的,所以在它们之间或之间写入空格时,将显示空格。