为什么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()或手动添加每行的结尾。
问候,鬼