当前位置: 首页 > 面试题库 >

如何删除内联/内联块元素之间的空间?

华景明
2023-03-14
问题内容

鉴于此HTML和CSS:

span {

    display:inline-block;

    width:100px;

    background-color:palevioletred;

}


<p>

    <span> Foo </span>

    <span> Bar </span>

</p>

结果,SPAN元素之间将有4像素宽的空间。

我知道为什么会发生这种情况,而且我也知道可以通过删除HTML源代码中SPAN元素之间的空白来摆脱该空间,如下所示:

<p>
    <span> Foo </span><span> Bar </span>
</p>

但是,我希望找到一种不需要篡改HTML源代码的CSS解决方案。

我知道如何使用JavaScript解决此问题-通过从容器元素(该段)中删除文本节点,如下所示:

// jQuery
$('p').contents().filter(function() { return this.nodeType === 3; }).remove();

但是,仅靠CSS就能解决这个问题吗?


问题答案:

由于此答案已变得非常流行,因此我将对其进行大量重写。

我们不要忘记提出的实际问题:

如何删除 内联块元素 之间的空间?我希望找到一种不需要篡改HTML源代码的CSS解决方案。 可以仅使用CSS来解决此问题吗?

有可能解决这个问题单独CSS,但目前还没有 完全 强大的CSS修复。

我最初回答中的解决方案是添加font-size: 0到父元素,然后在子元素上声明一个明智font-size的选择。

这在所有现代浏览器的最新版本中均有效。它可以在IE8中使用。它不会在Safari 5的工作,但它 确实 在Safari 6的Safari5的工作几乎是一个死的浏览器(0.33%,2015年8月)。

相对字体大小的大多数可能问题并不复杂解决。

但是,虽然这是一个合理的解决方案(如果您 特别需要 仅CSS的修复程序),但是如果您可以自由更改HTML(与我们大多数人一样),那么我不建议您这样做。

作为一名经验丰富的Web开发人员,我实际上是为解决此问题而做的:

<p>
    <span>Foo</span><span>Bar</span>
</p>

恩,那就对了。我删除了inline-block元素之间HTML中的空白。

这简单。这很简单。它无处不在。这是务实的解决方案。

有时您确实必须仔细考虑空格的来源。 将用JavaScript附加另一个元素会添加空格吗? 不,如果操作正确,则不会。

让我们通过一些新的HTML,以不同的方式进行神奇的删除空白的旅程:

<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
</ul>
  • 您可以像我通常那样做:

    <ul>
    <li>Item 1</li><li>Item 2</li><li>Item 3</li>
    


 类似资料:
  • 问题内容: 我想要几个相邻的块元素,它们占据了整个浏览器的宽度。 使用,效果很好,但是在一个元素和另一个元素之间存在几个像素的随机空间: 没有填充,没有边距,没有边框,没有偏移。 问题答案: 那是因为inline(-block)元素之间有一个空格字符(一个换行符和一些制表符算作一个空格),可以通过这样注释该空格来解决: 实际上,这不是错误,而是内联元素的正常行为。就像将图像放置在文本行旁边,或在输

  • 问题内容: 我正在使用此CSS来格式化两列,但是我仍然在两列之间留有边距空间。我可以使用或类似的方法消除它。有没有更优雅的方法可以做到这一点,或者CSS代码有问题? 问题答案: 也许您有: ?如果是这样,那么这可能是一个空格问题(事实证明,空格在html中确实很重要)。这应该解决它:

  • 问题内容: 鉴于: 如何注释,以便XML为: 问题答案: 您可以利用注释执行以下操作。 oo 酒吧 想要查询更多的信息 http://blog.bdoughan.com/2011/06/jaxb-and-complex-types-with-simple.html

  • 问题内容: 举个例子 是在HTML5有效吗? 问题答案: 是的,您编写的内容在HTML5中有效,但并非所有内联元素,我认为这只是适用于.. 参考:HTML5中的“块级”链接 提示:如果使用此设置,则to 或可能会有意外的视觉样式结果 更新: 对于“默认样式可能会导致混淆”的其他“内联代码块”组合,则“不允许”使用-说明在这里 ### 默认样式可能导致混淆的情况 某些元素具有默认样式或行为,这些默认

  • 内联命名空间旨在通过”版本”的概念,来实现库的演化。考虑如下代码: // 文件:V99.h inline namespace V99 { void f(int); // 对V98版本进行改进 void f(double); // 新特性 // … } // 文件:V98.h namespace V98 { void

  • 问题内容: 内联块之间有这个怪异的空间。我可以忍受它,直到通过AJAXCall加载更多内容时,微小的空间就会消失。我知道我在这里想念什么。 如何使内联块中的间距一致? 问题答案: 该空格在HTML中。有几种可能的解决方案。从最好到最坏: 删除HTML中的实际空间(理想情况下,服务器在提供文件时可以为您做到这一点,或者至少您的输入模板可以适当地隔开)http://jsfiddle.net/AWMMT