Цитаты и блоки кода в HTML

Когда нужно показать чужие слова или пример кода, обычный текст не подходит - здесь нужны отдельные теги: <blockquote> и <q> для цитат, <pre> и <code> для кода. Каждый по-своему меняет то, как браузер обращается с текстом внутри - от автоматических кавычек до сохранения пробелов и переносов строк.

Попробуй убрать cite у blockquote или поменять отступы внутри pre - результат справа обновится сам, пробелы сохранятся ровно так, как ты их напишешь.

Блочная цитата: blockquote и cite

Тег <blockquote> оборачивает целый фрагмент чужого текста - обычно один или несколько абзацев, вынесенных отдельно от основного текста. Браузер по умолчанию сдвигает такой блок отступом. Необязательный атрибут cite может хранить адрес источника - но это метаданные для программ и поисковиков, читателю на странице этот адрес не виден. Если источник нужно показать глазами, для этого есть отдельный элемент <cite>, размещённый обычно рядом с цитатой, а не внутри неё.

<blockquote cite="https://example.com/source"><p>Текст цитаты.</p></blockquote> - cite указывает источник, но остаётся невидимым на странице.

<blockquote>Текст цитаты (источник: example.com)</blockquote> - указание источника затесалось прямо в текст цитаты, хотя должно стоять отдельно.

Строчная цитата: q и cite

Если цитата короткая и стоит прямо внутри предложения, для неё есть тег <q>: браузер сам добавляет кавычки вокруг текста внутри него, печатать кавычки вручную не нужно. Элемент <cite> здесь тоже уместен - им помечают название источника: книги, статьи или произведения, а не обязательно ссылку.

<p>Знакомый девиз вёрстки: <q>Простой код - надёжный код.</q></p> - браузер сам добавит кавычки нужного вида.

<p>Знакомый девиз вёрстки: "Простой код - надёжный код."</p> - кавычки просто напечатаны как текст, браузер не знает, что это цитата.

Код на странице: pre и code

Тег <code> помечает короткий фрагмент кода прямо внутри текста - примерно так, как в этом уроке помечено название каждого тега. Обычный HTML при этом схлопывает лишние пробелы и переносы строк в один пробел, поэтому многострочный пример так не покажешь. Для этого есть <pre>: он сохраняет пробелы и переносы строк ровно так, как они написаны в коде. Многострочный пример кода обычно оформляют связкой обоих тегов: <pre><code>...</code></pre>.

<pre><code>&lt;ul&gt; &lt;li&gt;Один&lt;/li&gt; &lt;/ul&gt;</code></pre> - отступы и переносы строк сохранятся точно как написано.

<p>&lt;ul&gt;<br>&nbsp;&nbsp;&lt;li&gt;Один&lt;/li&gt;<br>&lt;/ul&gt;</p> - вручную расставлять br и неразрывные пробелы вместо pre - хрупкое решение, которое легко сломать следующей правкой.

Из истории Code, вместе с kbd, samp, var и cite, был в HTML с самого начала: все пять тегов входят уже в HTML 2.0 - первую версию стандарта, формально описанную в 1995 году. Это одни из первых «смысловых» тегов языка, с самого начала предназначенных для разметки технического и справочного текста, а не для внешнего вида.

Частые ошибки новичков

ОшибкаЧто происходитКак исправить
Ожидать, что атрибут cite покажется на странице как видимый текст cite - это метаданные-адрес для программ и поисковиков, читатель их не видит Указывать источник видимым текстом отдельно, например через элемент cite рядом с цитатой
Печатать кавычки вручную вместо тега q Браузер не понимает, что это именно цитата - кавычки остаются обычным текстом Оборачивать короткую цитату внутри предложения в q - кавычки браузер добавит сам
Расставлять br и пробелы вручную вместо pre, чтобы сохранить многострочный код Получается хрупкая разметка, которую легко сломать следующей правкой строки Оборачивать многострочный пример в pre (обычно вместе с code) - отступы и переносы сохранятся сами
Ставить pre ради одного короткого фрагмента внутри обычного предложения Получается разрыв строки там, где нужен просто инлайновый фрагмент кода Для короткого фрагмента внутри текста достаточно code, pre - только для отдельных блоков

Шпаргалка

ТерминЗначение
blockquoteБлочная цитата - выделяется отступом, оборачивает один или несколько абзацев
cite (атрибут)Адрес источника цитаты - для программ/поисковиков, на странице не отображается
qСтрочная цитата внутри предложения - браузер сам добавляет кавычки
cite (элемент)Название источника (книги, статьи, произведения) - видимый текст
pre + codeМногострочный код с сохранением отступов, обычно вместе: pre-код-code

Коротко: отвечаем на вопросы

В чём разница между blockquote и q?

blockquote - для блочной цитаты: обычно это один или несколько абзацев, вынесенных отдельно от основного текста и сдвинутых отступом. q - для короткой цитаты внутри предложения: она остаётся инлайновой, а кавычки вокруг неё браузер добавляет сам.

Чем отличаются pre и code?

code просто помечает фрагмент как код, не трогая пробелы и переносы строк. pre - это блок, который сохраняет пробелы и переносы строк ровно так, как они написаны. Для многострочного примера кода их обычно используют вместе: pre снаружи, code внутри.

Почему кавычки вокруг q иногда выглядят не так, как ожидалось?

Браузер выбирает вид кавычек по языку страницы или элемента (атрибут lang) - для разных языков приняты разные кавычки. Для смешанного по языкам текста это может сработать не так, как ожидается, и по-разному в разных браузерах, поэтому многие сайты задают нужные кавычки явно через CSS, а не полагаются на выбор браузера.

Категория
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×