Как правильно верстать блоки кода и его отдельные элементы
Фрагмент компьютерного кода обычно помещается в элемент <code>. Фрагментом может быть всё, что каким-либо образом связано с программным обеспечением компьютера: HTML-элемент, название файла, название программы и тому подобные вещи. Одиночным (см. далее) элементом <code> оформляются небольшие куски кода, находящиеся непосредственно в обычном тексте. Например:
<p>The <code>code</code> element represents a fragment of computer code.</p>
Для вёрстки блоков кода применяется конструкция <pre><code>:
<p>Программа <code>foo-bar</code> выглядит так:</p>
<pre><code>
var foo = 'bar';
alert( foo ); // bar
</code></pre>
В этом случае все пробельные символы в коде будут печататься как есть, так как по умолчанию для элемента <pre> в CSS определено свойство white-space со значением pre.
Для вёрстки блоков компьютерного вывода и ввода пользователя используются, в сочетании с <pre>, элементы <samp> и <kbd> соответственно:
<pre>
<samp>Хотите?</samp>
<kbd>Да.</kbd>
<samp>Получите!</samp>
</pre>
Указание языка кода для элемента <code>
Если вы хотите как-то обозначить язык, которому принадлежит код, то это лучше сделать так:
<p>The <code class="language-html">code</code> element represents a fragment of computer code.</p>
<p>Программа <code>foo-bar</code> выглядит так:</p>
<pre><code class="language-javascript">
var foo = 'bar';
alert( foo ); // bar
</code></pre>
То есть с помощью атрибута class и соответствующего его значения, начинающегося с language-.
Одна из целей указания языка с помощью атрибута class и его соответствующего значения, начинающегося с language-* — подсветка синтаксиса; в частности, например, это используется популярной JavaScript-библиотекой Prism.