为什么HTML5build议将代码元素放在前面?

HTML5文档build议将code元素放在pre元素中,但是我不明白这比使用代码元素和CSS更好或者更具语义。 在他们自己的例子中:

 <pre><code class="language-pascal">var i: Integer; begin i := 1; end.</code></pre> 

也可以写(对浏览器的默认设置做一些假设):

 <style> code { display: block; white-space: pre; } </style> … <code class="language-pascal">var i: Integer; begin i := 1; end.</code> 

即使pre是为了区分一个代码和一个内联的代码string,我并不认为这是一个更多的语义select,而不是指定类中code块性

推荐使用CSS解决scheme的pre是否有特定的原因?

<code>仅代表“计算机代码片段” 。 它最初被认为是简单的代码片段,如i++<code>

<pre> “表示一组预格式化的文本,其中结构由印刷惯例而不是由元素表示” 。 原来的目的不过是这样:提供一个文本,就像作者给出的一样,例如

  + ---------------------------------- +
 |  |
 | 警告! 预制的文本!  |  = O =
 |  __;  〜^
 + ---------------- TT ------------°
                  ||  _____________ _____________________
                  ||  | 给GRANDMA> | 完全不是陷阱> 
   oÖo||  |°°°°°°°°°°°°°</s></s></s></s></s></s></s></s></s></s></s></s></s>          
    |  ö||  |  |  .mm,                    
 〜 “” “〜” “” 〜 “” “〜” “” 〜 “” “〜” “” * “” “〜” “” 〜 “” “〜” “” 〜 “” “〜” “” 〜 “” “〜” “” 〜 “” “〜” “.. MWMWc ...〜 ”“ ”〜“” 

你不需要互相使用每一个。 <pre>有自己的angular色,就像<code>有自己的angular色一样。 但是, <pre>是一种标记给定片段中的空白是重要的方式, <code>缺less的是一个angular色。

但是,回到你的问题:注意确切的措辞:

下面的例子展示了如何使用precode元素来标记一段code

 <pre><code class="language-pascal">var i: Integer; begin i := 1; end.</code></pre> 

在这个例子中使用了一个类来表示使用的语言。

它说可以 ,不应该 。 你可以自由地做你想要的。 W3C不推荐这样做,但我个人build议你使用<pre><code>...

进一步解释

每当空白是你的代码的一部分和你的代码的结构,你应该说,这个结构应该保持。 由于代码中的结构是由印刷惯例(制表符,换行符,空格)给出的,所以我个人build议您使用<pre><code> ,即使它在DOM中可以说是更多的代码和另一个节点。 但是,每当缺less空格会导致你的代码不完善,这是必要的。

除此之外,不需要检查element.className就可以很容易区分内联代码和代码块,而且一些JS语法高亮显示工具可以很好的与<pre><code>...并自动剥离<code>

此外,如果您对<code>使用了一个通用的规则white-space:pre; ,您不能将其用于内联代码片段而无需额外的类。 如果您要创build一个类,则与<pre><code>相比,您一无所获。

参考

  • W3C: HTML5:4.5.12代码元素 (W3C推荐标准2014年10月28日)

    code元素表示计算机代码的一个片段。 这可能是XML元素名称,文件名称,计算机程序或计算机可识别的任何其他string。

  • W3C: HTML5:4.4.3 pre元素 (W3C推荐标准2014年10月28日)

    pre元素表示一个预先格式化的文本块,其中结构由印刷惯例而不是元素表示。

CSS是用于演示。

在许多编程语言中,空白是重要的(不是表示forms的)。

为了表示一个计算机代码块,pre元素可以和一个代码元素一起使用;

为了表示计算机输出块,pre元素可以与samp元素一起使用。

<pre><code>代码不能换行。 将<code>用于可以换行的内联代码。

浏览器上显示时, <pre>标记内所包含文本中的换行符和空格将保持原样,并保持为html文档。浏览器通常以固定节距的字体和< whitespace <pre>呈现<pre>文本。

<pre>显示换行符!

这可以防止您使用php函数,如nl2br()或手动添加每行的结尾。

问候,鬼