我认为 pre(html tag) 就像'white-space:pre'一样活跃。但事实并非如此。
<pre>
aaa
bbb
</pre>
<p style="white-space:pre;">
aaa
bbb
</p>
<pre>
忽略第一个和最后一个\n
。但<p>
保留第一个\n
并忽略最后一个。为什么?
我认为 pre(html tag) 就像'white-space:pre'一样活跃。但事实并非如此。
<pre>
aaa
bbb
</pre>
<p style="white-space:pre;">
aaa
bbb
</p>
<pre>
忽略第一个和最后一个\n
。但<p>
保留第一个\n
并忽略最后一个。为什么?
HTML 标准规定:
注意:在 HTML 语法中,紧跟在 pre 元素开始标记之后的前导换行符会被去除。
在这里阅读:http: //www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-pre-element
因此,该<pre>
元素包含此特殊规则。似乎如果其他类型的元素有white-space:pre
设置,则该规则不适用。
The <pre>
-Tag displays the content with a monospace font, wich means that every character has the same width.
It is easier to read instead of the standard-font of the browser, used in the <p style="white-space:pre;">
.
Actually, they are the same. The reason you're getting the space on top for <p>
s is because by default <p>
adds an empty line above itself so that you can distinguish between paragraphs. <pre>
doesn't do that, so you get no extra space there.
HTMLpre
元素和 CSS 设置white-space: pre
是完全不同的结构;将两者混淆是类别错误。但是您似乎指的是关于换行符的渲染差异。
根据规范,紧跟在开始标签后面的换行符应该被忽略,所以
<pre>
aaa
bbb
</pre>
应该相当于
<pre>aaa
bbb
</pre>
p
如果被替换pre
或添加了一些样式,这不应该以任何方式改变。但是浏览器并不总是遵守规则,这就是其中一种情况。
他们只是以不同的方式对待元素。士气是你应该避免使用pre
元素以及white-space: pre
,如果你使用它们,请继续关注这个变化。需要时,不要紧跟在开始标记后面的换行符,而是空格和换行符(如果你想在开始处有一个空行)。