Почему HTML5 рекомендует помещать элемент кода внутри pre?
документация HTML5 рекомендует поставить code элемент внутри pre элемент, но я не понимаю, как это лучше и более смысловой, чем просто с помощью элемента кода и CSS. В их собственном примере:
<pre><code class="language-pascal">var i: Integer;
begin
i := 1;
end.</code></pre>
также может быть написано (делая некоторые предположения о настройках браузера по умолчанию для pre):
<style>
code {
display: block;
white-space: pre;
}
</style>
…
<code class="language-pascal">var i: Integer;
begin
i := 1;
end.</code>
даже если pre есть выделить код блок из встроенной строки кода, Я не вижу, что это более семантический выбор, чем указание block-ness на code в классе.
есть ли конкретная причина pre рекомендуется над решением CSS?
4 ответов:
<code>представляет только a "фрагмент компьютерного кода". Первоначально это было задумано для простых фрагментов кода, таких как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>....дальнейших объяснений
всякий раз, когда пробел является частью вашего кода и структуры вашего кода, Вы должны заявить, что эта структура должна быть сохранена. Как структура в коде задается типографскими соглашениями (табуляциями, строками, пробелами) I лично рекомендуем использовать
<pre><code>, даже если это, возможно, больше кода и другой узел в DOM. Но всякий раз, когда недостающие пробелы будут делать ваш код несовершенным, это необходимо.кроме того, вы можете легко различаться между встроенным кодом и кодовыми блоками без проверки
element.className, и некоторые JS синтаксис маркер работает довольно хорошо с<pre><code>...и<code>автоматически.кроме того, если вы используете общее правило для
<code>Сwhite-space:pre;, вы не можете использовать его для встроенных фрагментов без дополнительных классов. Если вы должны были создать класс вместо этого, вы ничего не выиграли по сравнению с<pre><code>.ссылки
W3C:HTML5: 4.5.12 элемент кода (рекомендация W3C от 28 октября 2014 г.)
The
codeэлемент представляет фрагмент компьютерный код. Это может быть имя элемента XML, имя файла, компьютерная программа или любая другая строка, которую распознает компьютер.W3C:HTML5: 4.4.3 элемент pre (рекомендация W3C от 28 октября 2014 г.)
The
preэлемент представляет блок предварительно отформатированного текста, в котором структура представлена типографскими соглашениями, а не элементы.
CSS предназначен для презентации.
пробел является значительным (не презентационным) во многих языках программирования.
для представления блока компьютерного кода можно использовать элемент pre с элементом кода;
для представления блока вывода компьютера элемент pre может использоваться с элементом samp.
<pre><code>для блочного кода, который не должен обернуть. Используйте<code>для встроенного кода, который можно обернуть.разрывы строк и пробелы в тексте, заключенном в
<pre>теги сохраняются так же, как и в html-документе при отображении в браузере.Браузеры обычно визуализируют<pre>текст в фиксированном шрифте, сwhitespace.
<pre>показывает переносы строк!это предотвращает использование функции php, такой как nl2br() или добавление вручную
<br />в конце каждой строки.С уважением, Призрак
Comments