它们都表示空间,但有区别吗?
当前回答
如前所述,在有“无换行空格”的地方,您将不会收到换行符。
还要注意,只包含“”的元素可能会错误地显示,其中 将工作。至少在i.e. 6中(据我所知,IE7也有同样的问题),如果你有一个空的表格元素,如果没有内容,或者只有空白,它就不会对元素应用样式,例如边框。因此,下面的代码将不带边框:
<td></td>
<td> <td>
而边界将在本例中显示:
<td>& nbsp;</td>
嗯-不得不放一个虚拟空间,让它在这里正确渲染
其他回答
HTML解析器不将第一个空格视为空白,而将第二个空格视为空白。因此,“”并不一定会出现在特定的HTML标记中,而不可分割的空间总是会出现。
多个普通空格字符(空格、制表符和换行符)被视为单个空格字符:
对于除PRE之外的所有HTML元素,空格序列分隔“单词”(我们在这里使用术语“单词”来表示“非空格字符序列”)。当格式化文本时,用户代理应该识别这些单词,并根据特定的书面语言(脚本)和目标媒体的约定来布局它们。
So
foo bar
显示为
foo bar
但是始终显示无间断空间。所以
foo   bar
显示为
foo bar
,应该作为空白处理。
,,应该作为两个空白处理吗
' '可以作为一个无意义的空格处理
' + ' '可以作为单个' '处理
一个是非间断空间,另一个是规则空间。非换行空格意味着该行不应该在该点被换行,就像它不会在单词中间被换行一样。
此外,正如Svend在他的评论中指出的那样,非间断空间并不是折叠的。
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有一个很棒的页面来显示其他字符代码。
推荐文章
- 使伸缩项目正确浮动
- 形式内联内的形式水平在twitter bootstrap?
- 自定义元素在HTML5中有效吗?
- 如何触发自动填充在谷歌Chrome?
- 创建圈div比使用图像更容易的方法?
- 为什么Chrome浏览器不正确地确定页面是在不同的语言,并提供翻译?
- 在网页上用鼠标模拟震颤(例如帕金森病)?
- Bootstrap抛出Uncaught错误:Bootstrap的JavaScript需要jQuery
- 如何改变文本区域的边框颜色:焦点
- 我如何设置背景颜色为文本的宽度,而不是整个元素的宽度,使用CSS?
- 如何删除和清除所有的本地存储数据
- 强制打开“另存为…”弹出打开文本链接点击PDF在HTML
- 如何修改标签文本?
- 在HTML中还有其他有用的空格码吗,比如半空格的 , em-spaces, en-spaces等等?
- 输入触发器按钮单击