Rud*_*ski 48 html formatting whitespace
我早就认识到HTML文件中的任何一组空格都只会显示为一个空格.例如,这个:
<p>Hello. Hello. Hello. Hello. Hello.</p>
Run Code Online (Sandbox Code Playgroud)
显示为:
你好.你好.你好.你好.你好.
这非常好,就像你需要多个预格式化文本空间一样,你可以使用<pre>标签.但是原因是什么?更准确地说,为什么这是HTML规范?
tri*_*tan 38
空格在HTML中压缩,因为HTML的格式化方式和渲染方式之间存在区别.考虑这样的页面:
<html>
<body>
<a href="mylink">A link</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
例如,如果HTML使用空格缩进,则链接前面会有几个空格.
Zac*_*sch 15
正如其他人所说,它在HTML规范中.
如果要在输出中保留空格,可以使用<pre>标记:
<pre>This text has extra spaces
and
newlines</pre>
Run Code Online (Sandbox Code Playgroud)
但这通常也会以不同的字体显示文本.
S.L*_*ott 12
"为什么多个空间转换为单个空格?"
首先,"为什么"的问题很难回答.这是在规范中.这几乎就是它的结束.
考虑到有几种白色空间.
标签之间的空白区域. <p>\n<b>hi</b>\n</p>
标签内容中的空格. <p>Hi <i>everyone</i>.</p>
a <pre>或CDATA部分中的空格.
前两个很难区分.标签之间的空格,即使是XML,也是"可选的".但是当你拥有所谓的"混合内容模型" - 与内容混合的标签时 - "标签之间"和"在内容中但在标签之间"和"在内容中但不在标签之间"的微妙之处是不可能的整理.
所以他们不解决它.标签和内容中的空格之间的空格都是可选的.
eno*_*rev 11
它不仅是在该 规范,但是有一些感觉吧.如果没有压缩空格,则必须将所有html放在一行上.所以这样的事情:
<div>
<h1>Title</h1>
<p>
This is some text
<a href="#">Read More</a>
</p>
</div>
Run Code Online (Sandbox Code Playgroud)
会有一些奇怪的对齐空间到处都是.要做到正确的唯一方法是压缩代码,这很难维护.
如果浏览器没有这样做,可能很难格式化HTML代码以使其易于阅读.例如,您可能希望像这样格式化代码:
<html>
<body>
<div>
I like to indent all content that is inside div tags.
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果浏览器没有忽略div标签内文本之前的八个空格,那么您的网页可能看起来不像您希望的那样.
通常,这些设计决策没有记录在任何规范中,只能从碰巧可公开访问的工作组讨论档案中收集,或由规范作者自己解释。但是,在这种特殊情况下,HTML 3.2确实声明了以下内容:
除了文字文本(例如
PRE元素)之外,HTML 将连续的空白字符序列视为等同于单个空格字符(ASCII 十进制 32)。这些规则允许作者在直接编辑标记文本时具有相当大的灵活性。请注意,未来对 HTML 的修订可能允许根据相关样式表定义的制表符规则来解释水平制表符(ASCII 十进制 9)。
您今天看到的行为当然比 HTML 3.2 中指定的要复杂得多,但我相信推理仍然适用。这种灵活性很有用的一个例子是,当您打算硬包装和缩进一段很长的段落时:
<H1>Lorem ipsum</H1>
<P>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fastidii oportere
consulatu no quo. Vix saepe labores an, pri illud mentitum et, ex suas quas
duo. Sit utinam volutpat ea, id vis cibo meis dolorum, eam docendi
accommodare voluptatibus no. Id quaeque electram vim, ut sed singulis
neglegentur, ne graece alterum has. Simul partiendo quaerendum et his.
Run Code Online (Sandbox Code Playgroud)
如果没有折叠空白,您最终会得到一个具有异常大间隙的段落,其中由于缩进而文本被硬包装。
没有其他 HTML 规范暗示了这种设计决策背后的任何推理。特别是HTML 4只描述了折叠行为,而 HTML5 和 live 规范都遵循 CSS,它也没有解释任何东西。早期版本的 HTML 也不包含任何解释,尽管以下摘录确实出现在HTML 2.0的示例片段中:
<OL>
...
<UL COMPACT>
...
<LI> Whitespace may be used to assist in reading the
HTML source.
</UL>
...
</OL>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52778 次 |
| 最近记录: |