Ответ 1
<code>
представляет собой только "фрагмент компьютерного кода". Первоначально это предполагалось для простых фрагментов кода, таких как i++
или <code>
.
<pre>
"представляет собой блок предварительно отформатированного текста, в котором структура представлена типографскими соглашениями, а не элементами". Первоначальная цель была не более чем именно: предоставить текст так же, как это было дано автором, например
+----------------------------------+ | | | WARNING! PREFORMATED TEXT AHEAD! | =o= | __; ~^ +----------------TT------------° || _____________ _____________________ || | TO GRANDMA > | TOTALLY NOT A TRAP > oÖo || |°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°° | ö || | | .mm, ~"""~"""~"""~"""~"""~"""~~"""~"""~"""~"""~"""~"""~"""~"""~"""~""..MWMWc...~"""~""
Вам не нужно использовать друг друга. <pre>
имеет свои собственные роли, например <code>
имеет свой собственный. Тем не менее, <pre>
- это способ сигнализировать о том, что белое пространство в данном фрагменте важно, роль, которая <code>
отсутствует.
Однако вернемся к вашему вопросу: обратите внимание на точные формулировки:
В следующем примере показано, как блок кода может быть отмечен с помощью элементов
pre
иcode
.<pre><code class="language-pascal">var i: Integer; begin i := 1; end.</code></pre>
В этом примере используется класс, указывающий используемый язык.
Он говорит, что не мог. Вы можете делать это так, как хотите. Однако он не рекомендуется W3C, однако я лично рекомендую вам использовать <pre><code>...
.
Дальнейшее объяснение
Всякий раз, когда белое пространство является частью вашего кода и структуры вашего кода, вы должны указать, что эта структура должна храниться. Поскольку структура кода задается типографскими соглашениями (вкладки, переводы строк, пробелы), я лично рекомендую вам использовать <pre><code>
, даже если это возможно больше кода и другого node в DOM. Но всякий раз, когда отсутствует пробел, ваш код будет несовершенным.
Кроме того, вы можете легко различать встроенный код и кодовые блоки без проверки element.className
, а некоторые синтаксисы синтаксиса JS отлично работают с <pre><code>...
и автоматически стирают <code>
.
Кроме того, если вы используете общее правило для <code>
с white-space:pre;
, вы не можете использовать его для встроенных фрагментов без дополнительных классов. Если бы вы создали класс вместо этого, вы ничего не выиграли по сравнению с <pre><code>
.
Ссылки
-
W3C: HTML5: 4.5.12 Элемент кода (Рекомендация W3C от 28 октября 2014 года)
Элемент
code
represents фрагмент компьютерного кода. Это может быть имя элемента XML, имя файла, компьютерная программа или любая другая строка, распознанная компьютером. -
W3C: HTML5: 4.4.3 Предварительный элемент (Рекомендация W3C от 28 октября 2014 года)
Элемент
pre
represents блок предварительно отформатированного текста, в котором структура представлена типографскими соглашениями, а не элементами.