Каждый элемент HTML принадлежит некоторому количеству категорий контента, которые объединяют элементы с общим набором характеристик. Такая группировка является свободной, то есть не задает на самом деле отношение между элементами таких типов, но помогает определить и описать их поведение и правила, которым они должны следовать, особенно когда дело доходит до сложных деталей. Также возможна ситуация, когда элемент не входит ни в одну из этих категорий.

Существует три типа категорий контента:

  • Основные категории контента, описывающие общие для многих элементов правила;
  • Категории контента для элементов форм, описывающие общие правила для элементов форм;
  • Особые категории контента, описывающие редкие категории, актуальные только для нескольких элементов, возможно, лишь в особом контексте.

Обратите внимание: Более подробное обсуждение данных категорий контента и их сравнительных особенностей выходит за рамки данной статьи; можно обратиться к соответствующим разделам спецификации HTML (на английском).

Content_categories_venn.png

Основные категории контента

Метаданные

Элементы, принадлежащие к категории метаданных, изменяют отображение или поведение HTML-документа, связывают его с другими документами и предоставляют другую дополнительную информацию о документе.

Элементами метаданных являются:  <base>, <command>, <link>, <meta>, <noscript>, <script>, <style> и <title>.

Потоковый контент

Элементы основного потока обычно содержат текст и встроенный контент.

<a>, <abbr>, <address>, <article>, <aside>, <audio>, <b>,<bdo>, <bdi>, <blockquote>, <br>, <button>, <canvas>, <cite>, <code>, <command>, <data>, <datalist>, <del>, <details>, <dfn>, <div>, <dl>, <em>, <embed>, <fieldset>, <figure>, <footer>, <form>, <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, <header>, <hgroup>, <hr>, <i>, <iframe>, <img>, <input>, <ins>, <kbd>, <keygen>, <label>, <main>, <map>, <mark>, <math>, <menu>, <meter>, <nav>, <noscript>, <object>, <ol>, <output>, <p>, <pre>, <progress>, <q>, <ruby>, <s>, <samp>, <script>, <section>, <select>, <small>, <span>, <strong>, <sub>, <sup>, <svg>, <table>, <template>, <textarea>, <time>, <ul>, <var>, <video>, <wbr> и Текст.

Несколько других элементов, которые тоже принадлежат к этому типу, но требуют определённых условий:

Секционный контент

Подобные элементы создают секции (блоки) в текущей структуре документа, определяющие область действия заголовочного контента и элементов <header> и <footer>

К этой категории принадлежат элементы <article>, <aside>, <nav> и <section>

Не стоит путать данную модель контента с категорией корня задания разделов, которая изолирует свое содержимое от обычной структуры.

Заголовочный контент

Заголовочный контент задает заголовок секции, явно отмеченной структурным элементом или неявно – самим заголовочным.

Данной категории принадлежат такие элементы, как <h1>, <h2>, <h3>, <h4>, <h5>, <h6> и <hgroup>.

Элемент <header> сам по себе не является заголовочным, хотя с большой вероятностью содержит контент такого типа.

Стоит заметить, что элемент <hgroup> был удален из спецификации W3C HTML до приведения HTML 5 к окончательному варианту, но до сих пор является частью спецификации WHATWG и по крайней мере частично поддерживается большинством браузеров.

Фразовый контент

Фразовый контент определяет текст и его формат. Серии фразового контента образуют параграфы.

К данной категории принадлежат следующие элементы:  <abbr>, <audio>, <b>, <bdo>, <br>, <button>, <canvas>, <cite>, <code>, <command>, <data>, <datalist>, <dfn>, <em>, <embed>, <i>, <iframe>, <img>, <input>, <kbd>, <keygen>, <label>, <mark>, <math>, <meter>, <noscript>, <object>, <output>, <progress>, <q>, <ruby>, <samp>, <script>, <select>, <small>, <span>, <strong>, <sub>, <sup>, <svg>, <textarea>, <time>, <var>, <video>, <wbr> и обычный текст (не только состоящий из символов пробелов).

Еще несколько элементов входят в данную категорию при соблюдении особых условий:

  • <a>, если содержит в себе только фразовый контент
  • <area>, только внутри элемента <map>
  • <del>, если содержит в себе только фразовый контент
  • <ins>, если содержит в себе только фразовый контент
  • <link>, при наличии атрибута itemprop
  • <map>, если содержит в себе только фразовый контент
  • <meta>, при наличии атрибута itemprop

Встроенный контент

Встроенный контент импортирует в документ другой ресурс или вставляет содержимое на другом языке разметки или принадлежащее другому пространству имен. Элементами данной категории являются: <audio>, <canvas>, <embed>, <iframe>, <img>, <math>, <object>, <svg>, <video>.

Интерактивный контент

К интерактивному контенту относятся элементы, который специально разработаны для взаимодействия с пользователем. В данную категорию входят <a>, <button>, <details>, <embed>, <iframe>, <keygen>, <label>, <select> и <textarea>.
Некоторые элементы считаются интерактивным контентом только при соблюдении определенных условий:

Явный контент

Констент считается явным, когда он не скрыт и не является пустым, это контент, который отображен и предметен. У элементов потокового или фразового контента должен быть хотя бы один явный узел.

Контент форм

Контент форм включает в себя элементы, у которых есть владелец формы, обозначенный атрибутом form. Владелецем формы является либо элемент <form>, либо элемент, id которого указан в атрибуте form.

Данная категория включает несколько подкатегорий:

listed
Элементы, перечисленные в IDL коллекциях form.elements и fieldset.elements. Включают <button>, <fieldset>, <input>, <keygen>, <object>, <output>, <select>, и <textarea>.
labelable
Элементы, которые могут ассоциироваться с элементами <label>. Включают <button>, <input>, <keygen>, <meter>, <output>, <progress>, <select> и <textarea>.
submittable
Элементы, которые могут использоваться для построения набора данных формы при отправке на сервер. Включают <button>, <input>, <keygen>, <object>, <select> и <textarea>.
resettable
Элементы, которые могут быть затронуты при сбросе данных формы. Включают <input>, <keygen>, <output>,<select> и <textarea>.

Вторичные категории

Существуют некоторые вторичные классификации элементов, о которых тоже полезно знать.

Элементы поддержки скриптов

Элементы поддержки скриптов – это элементы, которые напрямую не влияют на отрисовку документа. Вместо этого они служат для внедрения скриптов, путем либо содержания кода скрипта напрямую, либо указания данных, которые будут использованы скриптами.

Элементами поддержки скриптов являются:

Прозрачная модель контента

Если элемент обладает прозрачной моделью контента, его содержимое должно быть структурировано таким образом, чтобы оно оставалось валидным HTML5, даже при удалении прозрачного элемента или заменой его на дочерние элементы.

Например, элементы <del> и <ins> являются прозрачными:

<p>Мы почитаем следующие истины <del><em>священными &amp; неоспоримыми</em></del> <ins>само собой разумеющимися</ins>.</p>

Если удалить эти элементы, данный фрагмент все равно будет представлять собой валидный HTML.

<p>Мы почитаем следующие истины <em>священными &amp; неоспоримыми</em> само собой разумеющимися.</p>

Прочие модели контента

Корень задания разделов.

Метки документа и участники

Внесли вклад в эту страницу: KTatyana, Isk1n, Angelskih, Quaiby, chernysh2909, alexbaumgertner, Aleksej, Lambrusco.pro
Обновлялась последний раз: KTatyana,