它们都表示空间,但有区别吗?


当前回答

与其说是回答,不如说是举例……

例# 1:

<div style="width:45px; height:45px; border: solid thin red; overflow: visible">
    Hello&nbsp;There
</div>  

例# 2:

<div style="width:45px; height:45px; border: solid thin red; overflow: visible">
    Hello There
</div>

和小提琴的链接。

其他回答

一个是非间断空间,另一个是规则空间。非换行空格意味着该行不应该在该点被换行,就像它不会在单词中间被换行一样。

此外,正如Svend在他的评论中指出的那样,非间断空间并不是折叠的。

如前所述,在有“无换行空格”的地方,您将不会收到换行符。

还要注意,只包含“”的元素可能会错误地显示,其中&nbsp;将工作。至少在i.e. 6中(据我所知,IE7也有同样的问题),如果你有一个空的表格元素,如果没有内容,或者只有空白,它就不会对元素应用样式,例如边框。因此,下面的代码将不带边框:

<td></td>
<td> <td>

而边界将在本例中显示:

<td>& nbsp;</td>

嗯-不得不放一个虚拟空间,让它在这里正确渲染

HTML解析器不将第一个空格视为空白,而将第二个空格视为空白。因此,“”并不一定会出现在特定的HTML标记中,而不可分割的空间总是会出现。

,是可堆叠的,这意味着您可以一起创建多个空间。

HTML只会解析一个空格,其余的都省略了……

如果你想要5个空格,你可以放5个x &nbsp;

多个普通空格字符(空格、制表符和换行符)被视为单个空格字符:

对于除PRE之外的所有HTML元素,空格序列分隔“单词”(我们在这里使用术语“单词”来表示“非空格字符序列”)。当格式化文本时,用户代理应该识别这些单词,并根据特定的书面语言(脚本)和目标媒体的约定来布局它们。

So

foo    bar

显示为

foo bar

但是始终显示无间断空间。所以

foo&‍nbsp;&‍nbsp;&‍nbsp;bar

显示为

foo   bar