我早就认识到HTML文件中的任何一组空格都只会显示为一个空格.例如,这个:
Hello. Hello. Hello. Hello. Hello.
显示为:
你好.你好.你好.你好.你好.
这非常好,就像你需要多个预格式化文本空间一样,你可以使用
标签.但是原因是什么?更准确地说,为什么这是HTML规范?
1> tristan..:空格在HTML中压缩,因为HTML的格式化方式和渲染方式之间存在区别.考虑这样的页面:
A link例如,如果HTML使用空格缩进,则链接前面会有几个空格.
@roe只有在它之前有东西的时候.浏览器不会呈现前导空格.
2> Turnkey..:试图解决"为什么"可能是因为HTML基于SGML,它已经指定了这种方式.它反过来基于60年代早期的GML.白色空间处理的原因很可能是因为数据一次被输入一张"卡片",这可能导致不希望的句子和段落分解.旧GML的一个不同之处在于它指定句子之间必须有两个空格(如旧的打字机规则),这些空格可能已经建立了空格独立于标记的先行词.
3> Zach Hirsch..:正如其他人所说,它在HTML规范中.
如果要在输出中保留空格,可以使用
标记:This text has extra spaces and newlines但这通常也会以不同的字体显示文本.
你也可以使用"white-space:pre;" css指令只是为现有元素获取文本格式:http://www.w3.org/TR/CSS21/text.html#white-space-prop
可以用css修复.
4> S.Lott..:"为什么多个空间转换为单个空格?"
首先,"为什么"的问题很难回答.这是在规范中.这几乎就是它的结束.
考虑到有几种白色空间.
标签之间的空白区域.
\nhi\n
标签内容中的空格.
Hi everyone.
a
或CDATA部分中的空格.
前两个很难区分.标签之间的空格,即使是XML,也是"可选的".但是当你拥有所谓的"混合内容模型" - 与内容混合的标签时 - "标签之间"和"在内容中但在标签之间"和"在内容中但不在标签之间"的微妙之处是不可能的整理.
所以他们不解决它.标签和内容中的空格之间的空格都是可选的.
5> enobrev..:它不仅是在该 规范,但是有一些感觉吧.如果没有压缩空格,则必须将所有html放在一行上.所以这样的事情:
Title
This is some text Read More
会有一些奇怪的对齐空间到处都是.要做到正确的唯一方法是压缩代码,这很难维护.
6> Michael..:如果浏览器没有这样做,可能很难格式化HTML代码以使其易于阅读.例如,您可能希望像这样格式化代码:
I like to indent all content that is inside div tags.如果浏览器没有忽略div标签内文本之前的八个空格,那么您的网页可能看起来不像您希望的那样.