Answers:
一个是不间断空间,另一个是规则空间。不间断的空格表示该行不应在该点处换行,就像它不会在一个单词的中间换行一样。
此外,正如斯文德(Svend)在其评论中指出的那样,不间断的空间不会崩溃。
&hairsp      
您可以在[ jsfiddle.net/medmunds/4crt3c9j/]
除了此处的其他答案外,不会破坏不折断的空格,就像常规空格一样。例如,两者
<p>Word1 Word2</p>
和
<p>Word1 Word2</p>
将在任何浏览器上呈现相同的内容,而
<p>Word1 Word2</p>
渲染时将保留空格。
您可以在此处看到一个有效的示例:
http://codepen.io/anon/pen/GJzBxo
和
http://codepen.io/anon/pen/LVqBQo
相同的div,相同的文本,不同的“空格”
<div style="width: 500px; background: red"> [loooong text with spaces]</div>
与
<div style="width: 500px; background: red"> [loooong text with ]</div>
edit
如前所述,在没有“不间断空格”的地方您不会收到换行符。
另外请注意,仅包含“”的元素可能会显示错误,其中&nbsp; 将工作。至少在ie 6中(据我所知,IE7存在相同的问题),如果您有一个空的表格元素,则该元素将不会应用样式(例如边框),如果没有内容或仅是白色空间。因此,以下内容将不会带有边框:
<td></td>
<td> <td>
而在此示例中将显示边框:
<td>& nbsp;</td>
嗯-必须放置一个虚拟空间以使其在此处正确呈现
是可堆叠的,这意味着您可以一起创建多个空间。
HTML只会解析一个空格'',其余的将被删除...
如果要五个空间,则应放置5 x
@Zoidberg是正确的,例如:
<h1>title</h1> <h2>date</h2>
不会在标题标记之间显示空格,
& nbsp ;
会做空间:)
TLDR;除了接受的答案;一种是隐式的,一种是显式的。
当浏览器读取了您由应用程序/库/框架编写或生成的HTML时,最好解释一下HTML的含义(随浏览器的不同而不同)。当您使用HTML实体代码时,您的浏览器更加具体。您是在明确告诉您要向用户显示字符(而不是只是为了方便开发人员阅读而只是将HTML隔开)。
更具体地说,如果输出的HTML是:
<html>
<title>hello</title>
<body>
<p>
Tell me and I will forget. Teach me and I
may remember. Involve me and I will learn.
</p>
</body>
</html>
浏览器只会在所有这些单词之间渲染一个空格(即使是缩进的单词也可以提高开发人员的可读性)。
但是,如果您放置相同的东西,而只是将<p>
标签更改为:
<p>Hello There</p>
然后,将按照您更明确的指示渲染空间。有使用这些空间进行样式设计的历史。随着CSS的成熟,这种用法已经有所减少。但是,许多HTML字符实体仍然有有效的用法:避免意外/非故意的解释(例如,如果您想显示代码)。在W3有很大的页面显示其他字符代码。
<p>Hello There</p>
或<p>Hello There</p>
(如果断点不是问题,则可以在之前和之后使用Regular空空格来保存一些位
)。