<pre> 并非用于表现!
2004年11月27日星期六(格林威治标准时间下午 4:41)
“您不应该使用 <pre> 标签,因为它用于表现。您应该使用 CSS 声明 white-space: pre 代替。”
不对!
当 **字符间的空白与字符本身同样重要且有意义** 时,您就应该使用 pre。
我只是想把我的想法说出来……
评论
评论2
<pre> 与 <blockquote> 是邻居,与 <strong> 和 <em> 是亲戚。我的意思是,按照不使用 <pre> 的论点,您也不应该使用 <strong> 或 <em>,而是应该将 <span> 应用于文本并用 CSS 设置粗体。
Gabriel Koen 于 2004 年 11 月 27 日星期六下午 6:39 GMT 如是说。
评论3
我非常不喜欢 pre 标签。但这并不意味着它是错误的。我只是不喜欢它。
我只是想把这个心事了结!:-)
John Oxton 于 2004 年 11 月 27 日星期六晚上 9:06 GMT 如是说。
评论4
我更倾向于使用 CSS 来设置代码标签的样式,使其具有预格式化的效果。我也同意 Gabriel K 的观点,某种程度上(如果我理解他的意思的话)。您绝对不应该使用 span 来代替 em 和 strong,因为这两者都具有真实的语义价值,而 span 在不带样式的情况下则没有。
我不会使用 pre 标签,除非 IE 在 white-space: pre; 方面存在明显问题,或者它起作用了?我很久以前在一个复杂的页面上试过,但我可能以后会再试一次。
Jeff 于 2004 年 11 月 28 日星期日凌晨 12:54 GMT 如是说。
评论5
Dog 说得对。PRE 并非用于表现,当文本中的空白与内容本身融为一体时。这与不使用 CSS 图像替换(例如文章中的图像)的逻辑相同。
可以这样想:即使 CSS 被剥离,标记语言也应该正确显示内容。如果您使用 <span style="white-space: pre;">,那么在不支持 CSS 的浏览器(或关闭样式表的用户)中将无法正确显示。如果间距对内容至关重要,那么这些用户将无法阅读。
Chris Vincent 于 2004 年 11 月 28 日星期日凌晨 4:11 GMT 如是说。
评论7
空白什么时候会如此重要?
因为对于代码,您应该使用 code 标签,而其他任何东西都只是将其样式应用于内容。
举个例子会有助于您的论点,事实上,标签的定义本身就表明它是用于格式化,而非意义。我实际上想不出任何一个不是用于表现的用途。
DarkCryst 于 2004 年 11 月 29 日星期一下午 4:34 GMT 如是说。
评论8
诗歌?我想您不能在想要显示大量诗歌时使用内联元素 CODE。(这,如果还不明显的话,是对评论 7 的回复。)
Anne 于 2004 年 11 月 29 日星期一下午 6:26 GMT 如是说。
评论9
当需要在网页上呈现简单表格时,这个标签似乎非常有帮助
我的意思是,您确实可以尝试使用 CSS 来做到这一点,但我还没有看到一种简单的方法可以做到。
否则,我同意:)
jordan 于 2004 年 11 月 30 日星期二下午 1:31 GMT 如是说。
评论10
哦,这很棘手。我不会惊讶于被列为引用的来源。
<pre> 预设了空白对内容至关重要。主要观点。
通常,HTML Dog 提倡内容与表现的分离。也就是说,如果文本是红色的,那是装饰,不是内容。因此,应该在 CSS 中建议使用红色。
那么,斜体呢?斜体可以表示强调(<em>),或者可以表示一个变量(<var>)。或者它可能只是装饰性的。
但是,如果以特定语言的标准样式,斜体具有意义呢?例如,福雷的《安魂曲》中的“Dies Irae”(<i>Requiem</i>),或者对“<i>USS Cole</i>”的攻击?如果我们为这些斜体实例使用 CSS,那么在没有 CSS 的渲染(完全合法的)HTML 中,我们将失去斜体所代表的语义。通过使用 <i> 元素,我们在内容中强加了表现。
有时,表现特征是内容固有的。
回到 <pre>。这个元素保留了空白。但是,空白本身不就是表现性的吗?当然!因此,如果您主张内容与表现的分离,那么您就不能赞成 <pre>。您将认可在 HTML 中包含表现信息。
猜猜怎么着?表现与内容的划分是谎言。
诀窍在于能够区分装饰性空白和固有性空白。如果内容需要特定的间距(作者缩进的代码片段、为艺术视觉效果格式化的诗歌等),那么内容就需要特定的表现。
基本上,这意味着只要我们能够用语义来支持我们使用的 HTML,那么我们使用包含特定表现方面的标记是无关紧要的。只要我们理解有些表现是装饰性的,而有些则与意义相关,我们对待这种表现的方式就必须有所不同。
真正的分歧不在于表现与内容之间;它完全在于装饰与意义之间,就是这么简单。
Neal 于 2004 年 12 月 1 日星期三早上 8:44 GMT 如是说。
评论11
绝对正确。对我来说,一个关键问题总是“这个页面在没有 CSS 的情况下‘有效’吗”?在没有样式的环境中查看内容是否合理?太多人忘记了这个非常重要的因素。世界不仅仅是一个符合 CSS 的浏览器,比如 Mozilla。它超越了这一点。
Andrew 于 2004 年 12 月 1 日星期三下午 4:51 GMT 如是说。
评论12
我同意 Neal 的观点(评论 10)
“真正的分歧不在于表现与内容之间;它完全在于装饰与意义之间,就是这么简单。”
我们设计页面时,无论其方式如何,都要与我们的目的保持一致。真正的分歧在于网站的维护。
来自中国的 YBB
YBB 于 2004 年 12 月 7 日星期二下午 1:47 GMT 如是说。
评论13
例如,福雷的《安魂曲》中的“Dies Irae”,或者对 USS Cole 的攻击?
例如,福雷的《安魂曲》中的“Dies Irae”,或者对 USS Cole 的攻击?
我真希望 <code> 元素具有与 <pre> 元素相同的默认属性。
hemebond 于 2004 年 12 月 15 日星期三凌晨 12:54 GMT 如是说。
评论14
真是够了!
例如,福雷的《安魂曲》中的“Dies Irae”(<i>Requiem</i>),或者对<i>USS Cole</i>的攻击?
hemebond 于 2004 年 12 月 15 日星期三凌晨 12:56 GMT 如是说。
评论15
真是够了!
例如,福雷的《安魂曲》中的“Dies Irae”(<cite>Requiem</i>),或者对<cite>USS Cole</cite>的攻击?
hemebond 于 2004 年 12 月 15 日星期三凌晨 12:56 GMT 如是说。
评论16
真是够了!
例如,福雷的《安魂曲》中的“Dies Irae”(<cite>Requiem</cite>),或者对<cite>USS Cole</cite>的攻击?
hemebond 于 2004 年 12 月 15 日星期三凌晨 12:56 GMT 如是说。
评论19
我的普遍感觉是,<pre> 及其同类 <strong> 和 <em> 并非用于表现,因为它们只是表明与周围内容的区别——尽管带有默认的表现形式(空白、斜体等)。浏览器强制执行的默认表现不应使元素本身在定义上就具有表现性。例如,浏览器会对 <p> 元素强制执行默认属性(顶部/底部边距),但我们不会说它们本质上是表现性的。
因此,<pre> 元素并非用于表现。相反,它表明其表现形式应与周围内容有所区别,并且浏览器有默认的方式来呈现这种区别。CSS 用于修改默认的表现形式。
Cailean 于 2005 年 3 月 9 日星期三凌晨 12:34 GMT 如是说。

评论1
引用的来源是什么?
“预格式化”——听起来像是格式化!但是格式化是内容的一部分还是表现的一部分?我想这取决于内容。
Gabriel Mihalache 于 2004 年 11 月 27 日星期六下午 5:19 GMT 如是说。