为什么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色。
但是,回到你的问题:注意确切的措辞:
下面的例子展示了如何使用
pre
和code
元素来标记一段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()或手动添加每行的结尾。
问候,鬼