html4
说这个:
为了避免 SGML 换行规则的问题以及现有实现之间的不一致,作者不应依赖用户代理在开始标记之后或结束标记之前立即呈现空白。因此,作者,特别是创作工具,应该写:
我们为订阅者提供免费的技术支持。
而不是:
我们为订阅者提供免费技术支持。
和这个:
SGML(参见 [ISO8879],第 7.6.1 节)指定必须忽略紧接在开始标记之后的换行符,也必须忽略紧接在结束标记之前的换行符。这适用于所有 HTML 元素,无一例外。
以下两个 HTML 示例必须以相同方式呈现:
托马斯正在看电视。
托马斯正在看电视。
以下两个例子也必须如此:
因此,人们不应该依赖它们是否被忽视。那
html5
呢?
UPD 或者让我们这样说:我可以将它们视为被忽略还是有时它们很重要(以一种或另一种方式表现出来)?如果有的话,通过哪些方式?
UPD 嗯,我应该说我考虑过重构......?我正在努力使模板更具可读性,这就是让我思考它的原因。
内联标签中的空格绝对不会被忽略(即
<a>
、<span>
、<strong>
...),例如在本例中,
<p>We offer free <a>technical support</a> for subscribers.</p>
<p>We offer free<a> technical support </a>for subscribers.</p>
如果你将CSS设置为这样的
a { text-decoration: underline; }
你绝对可以看到差异。
有时换行符会在内联标记中产生奇怪的结果,例如,如果您编写这样的代码,
<p>We offer free <a>
technical
support
</a> for subscribers.</p>
它似乎忽略了第一个换行符,但不是最后一个。
这是两个示例的小提琴:http://jsfiddle.net/Niffler/fnnanru2/
在块标签内(即
<p>
、<h1>
、<div>
...),标签开头或结尾的空格以及换行符应始终被忽略(即 <p>test</p>
应与<p> test </p>
)。
正如另一位用户在评论中所写,换行符通常会呈现为与空格相同。
此外,多个空格或换行符或其组合通常会汇总为一个空格。
浏览器应该忽略空格和浏览器忽略空格是两个完全不同的问题。
您不应该在开始标记后放置空格,即使它(有时)有效。由于有相关文档,浏览器可能会更改以遵守该规则,恕不另行通知。
它们不应该以相同的方式呈现,但目前大多数浏览器都会呈现
<P>We offer free<a> technical support </a>for subscribers.</P>
和
<P>We offer free <a>technical support</a> for subscribers.</P>
一样。
请记住:所有这些都可能会更改,恕不另行通知,所以我一定会遵循文档的规则。