在html中忽略了前导空格和尾随空格?

时间:2014-11-19 19:59:08

标签: html html5 whitespace spaces trailing

html4this

  

为了避免SGML换行规则的问题以及现有实现之间的不一致,作者不应该依赖用户代理在开始标记之后或紧接在结束标记之前立即渲染空白。因此,作者,特别是创作工具,应该写:

     
    

< P>我们提供免费的< A>技术支持< / A>对于订阅者。< / P>

  
     

而不是:

     
    

< P>我们提供免费< A>订阅者的技术支持< / A>。< / P>

  

this

  

SGML(参见[ISO8879],第7.6.1节)规定必须忽略紧跟在开始标记之后的换行符,并且必须在结束标记之前立即换行。这适用于所有HTML元素,无一例外。

     

以下两个HTML示例必须以相同的方式呈现:

     
    

< P> Thomas正在看电视。< / P>

         

< P>
    托马斯正在看电视     < / P>

  
     

以下两个例子也必须如此:

     
    

< A>我最喜欢的网站< / A>

         

&LT a取代;
    我最喜欢的网站
    < / A>

  

所以,不应该依赖它们被忽略。那么html5呢?

UPD 或者让我们这样说:我可以将它们视为被忽略或有时它们是否重要(以某种方式表现出来)?在哪个方面,如果有的话?

UPD 嗯,我应该说我考虑过重构......?我试图让模板更具可读性,这就是让我思考它的原因。

2 个答案:

答案 0 :(得分:6)

内联标记中肯定不会忽略空格(例如<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>)相同。

正如另一位用户在评论中所写,换行符通常会与空格相同。

此外,多个空格或换行符或其组合通常会汇总到一个空格。

答案 1 :(得分:2)

浏览器应该忽略空格,浏览器忽略的ARE空间是两个完全不同的问题。

你不应该在开始标记之后放置空格,即使它(有时)有效。由于有关此文档,浏览器可能会更改为遵守该规则,恕不另行通知。

他们不应该以相同的方式呈现,但目前大多数浏览器呈现

<P>We offer free<a> technical support </a>for subscribers.</P>

<P>We offer free <a>technical support</a> for subscribers.</P>

同样。

请记住:所有这些都可能在没有通知的情况下发生变化,所以我肯定会遵循文档的规则。