如何删除列表项目之间的空间

这个问题在这里已经有了答案:

  • 如何去除内嵌块元素之间的空间? 32个答案

  • 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>元素是内联的,所以在它们之间或之间写入空格时,将显示空格。

    链接地址: http://www.djcxy.com/p/89261.html

    上一篇: How to remove the space between list items

    下一篇: Unwanted spaces when using display: inline