Мой сайт будет иметь некоторый встроенный код («при использовании foo()
функции ...») и некоторые фрагменты блока. Это, как правило, XML и очень длинные строки, которые я предпочитаю оборачивать браузером (т. Е. Не хочу использовать <pre>
). Я также хотел бы поместить форматирование CSS в фрагменты блока.
Кажется, что я не могу использовать <code>
оба, потому что, если я добавлю атрибуты блока CSS на него (с display: block;
), это сломает встроенные фрагменты.
Мне любопытно, что люди делают. Использовать <code>
для блоков, а <samp>
для inline? Использовать <code><blockquote>
или что-то подобное?
Я хотел бы сохранить фактический HTML как можно более простым, избегая классов, так как другие пользователи будут его поддерживать.
html
semantic-markup
Стив Беннетт
источник
источник
<pre>
и его поведение можно помнить как слово « точно»Ответы:
Используйте
<code>
для встроенного кода, который может переноситься, и<pre><code>
для блочного кода, который не должен переноситься.<samp>
предназначен для примера вывода , поэтому я бы не использовал его для представления примера кода (который читатель должен ввести ). Это то, что делает переполнение стека.(Еще лучше, если вы хотите легко поддерживать, пусть пользователи редактируют статьи как Markdown, тогда им не нужно помнить, чтобы использовать
<pre><code>
.)HTML5 согласен с этим в «
pre
элементе» :источник
<code>
тега, но решили, что мы будем писать только одну строку? Или я думаю, потому что они не хотели иметь два тега, один блок и один встроенный? Тем не менее ... что плохого в создании<code>
блочного уровня с помощью CSS? Я думал, что мы должны были написать «семантический» HTML.<code>
это хорошо и семантически, но<pre>
не так много.<code>
блочного уровня с помощью CSS не является семантическим. Этот способ рекомендуется в HTML5 .<pre>
том, что он также изменяет обработку пробелов: все пробелы сохраняются, а перенос отключен. Разве есть способ выключить это?white-space: normal;
Хотя я не понимаю, почему вы сделали бы это для кода. Также это<pre><code>
глупо,<pre>
тег очень четко определен в стандартах как «компьютерный код» (и другие вещи), как упомянуто @jleedev. Это потому, что вы думаете, что<code>
это лучшее имя? извините, это не делает его более семантическим. С тэгом есть похожий случай, на<address>
самом деле он не звучит как «автор», но стандарт гласит, что это то, для чего он есть, так что он есть.Что-то, что я полностью упустил: поведение без упаковки
<pre>
можно контролировать с помощью CSS. Так что это дает точный результат, который я искал:http://jsfiddle.net/9mCN7/
источник
Лично я бы использовал,
<code>
потому что это наиболее семантически правильно. Затем, чтобы провести различие между встроенным и блочным кодом, я бы добавил класс:для встроенного кода или:
для блока кода. В зависимости от того, что встречается реже.
источник
<code>
блок по умолчанию без класса для наиболее распространенного варианта использования. Тогда любому, кто хочет сделать необычную вещь, нужно только добавить класс. Делая это любым другим способом, вы по-прежнему будете просить пользователя ввести extra. Таким образом, пользователь может думать об этом как о добавлении специального тега, а не об использовании совершенно другой структуры.Для обычного встроенного
<code>
использования:и для каждого места, где заблокировано
<code>
необходимо использоватьВ качестве альтернативы, определите
<codenza>
тег для блока разрыва подкладки<code>
(без классов)Тестирование: (примечание: ниже приведен сценарий, использующий
data:
протокол / схему URI, поэтому%0A
коды формата nl необходимы для сохранения, когда они вырезаны и вставлены в строку URL для тестирования, поэтомуview-source:
( ctrl- U) хорошо выглядит перед каждой строкой ниже с%0A
)источник
Показать HTML-код, как есть , используя (устаревший)
<xmp>
тег:Очень грустно, что этот тег устарел, но он все еще работает в браузерах, это плохой тег. не нужно ничего избегать внутри него. Какая радость!
Показать HTML-код, как есть , используя
<textarea>
тег:источник
<textarea readonly>
которое делает то же самое, актуально и имеет гораздо больший контроль, если хотите.<xmp>
делает любой другойblock
элемент. Я бы не рекомендовал его как реальное решение, только как теоретическое.<blink>
это один из примеров - я хотел бы использовать это для всего, что должно быть ориентировано на будущее.Рассмотрим TextArea
Люди, которые находят это через Google и ищут лучший способ управления отображением своих фрагментов, также должны учитывать,
<textarea>
что дает большой контроль над шириной / высотой, прокруткой и т. Д. Отметив, что @vsync упомянул устаревший тег<xmp>
, я считаю,<textarea readonly>
что это отличная замена для отображения HTML без необходимости экранирования чего-либо внутри него (кроме случаев, когда оно</textarea>
может появиться внутри).Например, чтобы отобразить одну строку с контролируемым
<textarea rows=1 cols=100 readonly>
переносом строк, рассмотрите html или т. Д. С любыми символами, включая символы табуляции и CrLf</textarea>
.Чтобы сравнить все ...
источник
Рассмотрим Prism.js: https://prismjs.com/#examples
Это делает
<pre><code>
работу и привлекательно.источник