【问题标题】:How does angular remove whitespaces between <span>s?角度如何删除 <span> 之间的空格?
【发布时间】:2020-05-30 04:00:00
【问题描述】:

我必须说直到上周我才注意到这一点。如果你有以下 HTML

<div>
    <span>A</span>
    <span>B</span>
</div>

DEMO

它被呈现为A B。但是,如果你在 Angular 中渲染完全相同的东西,那么 A 和 B 之间的空间就会被删除。我创建了一个 Stackblitz 来演示 Angular 中的几个案例:

<h3>With normal space</h3>
<div>
  <span>A</span>
  <span>B</span>
</div>
<br>
<h3>  With &amp;ngsp;</h3>
<div >
  <span>A</span>&ngsp;
  <span>B</span>
</div>
<br>
<h3>With ngPreserveWhitespaces</h3>
<div ngPreserveWhitespaces>
  <span>A</span>
  <span>B</span>
</div>

DEMO

我尝试使用 Chrome DevTools 检查 HTML,但我仍然不明白它是如何完成的。对于所有情况,HTML/CSS 都是相同的。无论如何,这可能非常简单。有什么建议吗?

【问题讨论】:

  • 标签之间的任何非文本都被删除,所以基本上所有内容都放在一行
  • angular 正在压缩您的代码(或者可能与 stackblitz 有关)
  • 当然,在 DevTools 中你看不到任何这些,现在一切都说得通了 :)

标签: html css angular


【解决方案1】:

span 默认的 display 属性是 inline-block。这将在 span 元素之间创建额外的空间,因此我们需要通过将 font-size: 0 提供给父元素来删除它。而且你必须给你的子元素字体大小。像这里一样,我将font-size:0; 应用于父元素,即div,并将font-size:1rem; 应用于div 的子元素。

div{
  font-size: 0;
}
div>span{
  font-size:1rem;
}
<div>
	<span>A</span>
	<span>B</span>
</div>

<span id="total">X</span>
<span id="max">Y</span>

【讨论】:

  • 这确实是一个解决这个问题的技巧,但这不是我的问题:)
  • 那么您的实际问题是什么。你能再解释一下吗?
  • 简而言之,问题是:角度如何去除那个空白,但@Poul Kruijt 已经给出了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 2021-11-13
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
相关资源
最近更新 更多