4

我认为 pre(html tag) 就像'white-space:pre'一样活跃。但事实并非如此。

<pre>
aaa
bbb
</pre>

<p style="white-space:pre;">
aaa
bbb
</p>

<pre>忽略第一个和最后一个\n。但<p>保留第一个\n并忽略最后一个。为什么?

jsfiddle测试

4

4 回答 4

7

HTML 标准规定:

注意:在 HTML 语法中,紧跟在 pre 元素开始标记之后的前导换行符会被去除。

在这里阅读:http: //www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-pre-element

因此,该<pre>元素包含此特殊规则。似乎如果其他类型的元素有white-space:pre设置,则该规则不适用。

于 2012-08-24T19:12:19.647 回答
1

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;">.

于 2012-08-24T17:29:03.567 回答
1

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.

于 2012-08-24T17:29:13.080 回答
0

HTMLpre元素和 CSS 设置white-space: pre是完全不同的结构;将两者混淆是类别错误。但是您似乎指的是关于换行符的渲染差异。

根据规范,紧跟在开始标签后面的换行符应该被忽略,所以

<pre>
aaa
bbb
</pre>

应该相当于

<pre>aaa
bbb
</pre>

p如果被替换pre或添加了一些样式,这不应该以任何方式改变。但是浏览器并不总是遵守规则,这就是其中一种情况。

他们只是以不同的方式对待元素。士气是你应该避免使用pre元素以及white-space: pre,如果你使用它们,请继续关注这个变化。需要时,不要紧跟在开始标记后面的换行符,而是空格和换行符(如果你想在开始处有一个空行)。

于 2012-08-24T19:13:29.650 回答