Категории содержимого
Большинство элементов HTML принадлежат одной или нескольким категориям содержимого — в эти категории входят элементы с общими характеристиками. Это нестрогая классификация (она фактически не устанавливает связи между элементами этих категорий), но она помогает определить и описать общие свойства категорий и связанные с ними правила. Некоторые элементы не принадлежат ни одной из этих категорий.
Категории содержимого используются для определения модели содержимого элементов, то есть того, какие элементы могут быть потомками каждого элемента. Например, элемент <p> может содержать только фразовое содержимое, а элемент <div> может содержать потоковое содержимое. У некоторых элементов, например <ins>, есть прозрачная модель содержимого.
Существует семь основных категорий содержимого, которые можно обобщить с помощью приведённой ниже диаграммы Венна:
Примечание: Более подробное обсуждение этих категорий содержимого и их сравнительных функций выходит за рамки этой статьи. Для этого можно обратиться к соответствующим разделам спецификации HTML.
Метаданные
Элементы, относящиеся к категории метаданных, изменяют представление или поведение остальной части документа, задают ссылки на другие документы или передают другую внеполосную информацию. Всё содержимое <head>, включая <title>, <link>, <script>, <style> и менее часто используемый элемент <base>, относится к метаданным. Для метаданных, которые нельзя представить с помощью других элементов, существует элемент <meta>.
Элементы метаданных:
Некоторые из этих элементов принадлежат более чем к одной категории содержимого. Например, <script> относится к категориям метаданных, потокового и фразового содержимого, а также является элементом поддержки скриптов; <script> можно использовать в местах, где ожидаются метаданные, фразовое содержимое или элементы поддержки скриптов.
Потоковое содержимое
Потоковое содержимое — это широкая категория, охватывающая большинство элементов, которые могут находиться внутри элемента <body>, включая элементы заголовков, секционирующие элементы, элементы фразового содержимого, встраиваемые элементы, интерактивные элементы и элементы, связанные с формами. К ней также относятся текстовые узлы (но не те, которые состоят только из пробельных символов).
Элементы потокового содержимого:
<a><abbr><address><article><aside><audio><b><bdi><bdo><blockquote><br><button><canvas><cite><code><data><datalist><del><details><dfn><dialog><div><dl><em><embed><fieldset><figure><footer><form><geolocation><h1>-<h6><header><hgroup><hr><i><iframe><img><input><ins><kbd><label><main><map><mark><math><menu><meter><nav><noscript><object><ol><output><p><picture><pre><progress><q><ruby><s><samp><script><search><section><select><slot><small><span><strong><sub><sup><svg><table><template><textarea><time><u><ul><var><video><wbr>- Автономные пользовательские элементы
- Обычный текст
Некоторые другие элементы относятся к этой категории, но только при соблюдении определённого условия:
-
<area>, если он является потомком элемента<map> -
<link>, если присутствует атрибутitemprop -
<meta>, если присутствует атрибутitemprop
Секционирующее содержимое
Секционирующее содержимое, подмножество потокового содержимого, создаёт раздел в текущей структуре документа, определяя область действия элементов <header> и <footer>.
Секционирующие элементы:
Содержимое заголовков
Содержимое заголовков, подмножество потокового содержимого, определяет заголовок раздела. Это определение применимо как к разделам, обозначенным явными секционирующими элементами, так и к разделам, неявно определяемым самим содержимым заголовков.
Элементы заголовков:
Примечание: Хотя элемент <header>, вероятно, содержит содержимое заголовков, сам он к нему не относится.
Фразовое содержимое
Фразовое содержимое, подмножество потокового содержимого, включает текст и разметку внутри документа. Последовательности фразового содержимого образуют абзацы.
Элементы фразового содержимого:
<abbr><audio><b><bdi><bdo><br><button><canvas><cite><code><data><datalist><dfn><em><embed><i><iframe><img><input><kbd><label><mark><math><meter><noscript><object><output><picture><progress><q><ruby><s><samp><script><select><slot><small><span><strong><sub><sup><svg><template><textarea><time><u><var><video><wbr>- Автономные пользовательские элементы
- Обычный текст
Некоторые другие элементы относятся к этой категории, но только при соблюдении определённого условия:
-
<a>, если он содержит только фразовое содержимое -
<area>, если он является потомком элемента<map> -
<del>, если он содержит только фразовое содержимое -
<ins>, если он содержит только фразовое содержимое -
<link>, если присутствует атрибутitemprop -
<map>, если он содержит только фразовое содержимое -
<meta>, если присутствует атрибутitemprop
Встраиваемое содержимое
Встраиваемое содержимое, подмножество потокового содержимого, импортирует другой ресурс или вставляет в документ содержимое, написанное на другом языке разметки или принадлежащее другому пространству имён.
Элементы встраиваемого содержимого:
Интерактивное содержимое
Интерактивное содержимое, подмножество потокового содержимого, включает элементы, специально предназначенные для взаимодействия с пользователем.
Элементы интерактивного содержимого:
Некоторые элементы относятся к этой категории только при соблюдении определённых условий:
-
<a>, если присутствует атрибутhref -
<audio>, если присутствует атрибутcontrols -
<img>, если присутствует атрибутusemap -
<input>, если атрибутtypeне находится в скрытом состоянии -
<object>, если присутствует атрибутusemap -
<video>, если присутствует атрибутcontrols
Осязаемое содержимое
Осязаемое содержимое — это содержимое, которое не является пустым или скрытым; оно отображается и несёт смысловую нагрузку. Осязаемое содержимое не используется для определения моделей содержимого, но служит для формулировки общего правила: элементы, чья модель содержимого допускает любое потоковое или фразовое содержимое, должны иметь в своём содержимом хотя бы один узел с осязаемым содержимым, у которого не указан атрибут hidden.
Элементы с осязаемым содержимым:
<a><abbr><address><article><aside><b><bdi><bdo><blockquote><button><canvas><cite><code><data><del><details><dfn><div><em><embed><fieldset><footer><figure><form><iframe><img><ins><kbd><label><main><map><mark><math><meter><nav><object><p><picture><pre><progress><q><ruby><s><samp><search><section><select><small><span><strong><sub><sup><svg><table><textarea><time><u><var><video>- Автономные пользовательские элементы
- Обычный текст, не являющийся пробельными символами между элементами
Некоторые элементы относятся к этой категории только при соблюдении определённых условий:
-
<audio>, если присутствует атрибутcontrols -
<dl>, если среди дочерних элементов есть хотя бы одна группа «имя — значение» -
<input>, если атрибут type не находится в скрытом состоянии -
<ol>, если среди его дочерних элементов есть хотя бы один элемент<li> -
<ul>, если среди его дочерних элементов есть хотя бы один элемент<li>
Элементы, не относящиеся ни к одной категории
Несколько элементов не относятся ни к одной категории содержимого. К ним относятся:
<caption><col><colgroup><dd><dt><figcaption><head><html><legend><li><optgroup><option><param><rb><rp><rt><rtc><source><tbody><tfoot><th><thead><tr><track>
Элементы поддержки скриптов
Элементы поддержки скриптов — это элементы, которые напрямую не влияют на отображаемое содержимое документа. Вместо этого они служат для поддержки скриптов: содержат или задают непосредственно код скрипта либо указывают данные, которые будут использоваться скриптами. Почти все элементы, включая те, которым разрешено содержать только определённые элементы (например, <ul>, которому разрешено содержать элементы <li>), могут содержать элементы поддержки скриптов.
Элементы поддержки скриптов:
Содержимое, связанное с формами
Содержимое, связанное с формами, — это подмножество потокового содержимого, включающее элементы, у которых есть владелец формы и которые можно использовать везде, где ожидается потоковое содержимое. Владелец формы — это либо содержащий элемент <form>, либо элемент <form>, чей id указан в атрибуте form элемента.
Элементы, связанные с формами:
Эта категория включает несколько подкатегорий:
- перечисляемые
-
Элементы, перечисленные в коллекциях
HTMLFormElement.elementsиHTMLFieldSetElement.elements. Включает<button>,<fieldset>,<input>,<object>,<output>,<select>и<textarea>. - отправляемые
-
Элементы, которые можно использовать для формирования набора данных формы при её отправке. Включает
<button>,<input>,<select>и<textarea>. - сбрасываемые
-
Элементы, на которые может повлиять сброс формы. Включает
<input>,<output>,<select>и<textarea>. - наследующие autocapitalize и autocorrect
-
Элементы, наследующие атрибуты
autocapitalizeиautocorrectот своей формы-владельца. Включает<button>,<fieldset>,<input>,<output>,<select>и<textarea>. - связываемые с метками
-
Элементы, которые можно связать с элементами
<label>. Включает<button>,<input>(все типы, кромеhidden),<meter>,<output>,<progress>,<select>и<textarea>.
Прозрачная модель содержимого
Помимо перечисленных категорий содержимого, модель содержимого элемента также может быть определена как «прозрачная». Если допустимое содержимое элемента X — «прозрачное», мы рассматриваем родительский элемент X. Мы пересекаем допустимое содержимое родительского элемента X с категориями содержимого X, и полученный результат определяет значение термина «прозрачное» в данном контексте. Если у родительского элемента X также прозрачная модель содержимого, мы продолжаем подниматься по дереву, пока не найдём непрозрачную модель содержимого. Если такого родительского элемента нет, «прозрачное» означает «потоковое содержимое».
Например, элемент <ruby> допускает фразовое содержимое. Элемент <ins> относится к категории фразового содержимого, если содержит только фразовое содержимое. Поэтому элемент <ins> можно поместить внутрь элемента <ruby>. Допустимое содержимое элемента <ins> — «прозрачное», что при вложении в <ruby> означает «фразовое содержимое». Однако элементы <rt> не относятся к фразовому содержимому. Поэтому элемент <rt> нельзя вложить в этот элемент <ins>, даже несмотря на то, что и <rt>, и <ins> могут находиться внутри <ruby>, а <ins> является «прозрачным».
<ruby>
Text before
<ins>
<!-- Invalid: rt cannot be placed inside ins here -->
<rt>Pronunciation</rt>
</ins>
</ruby>
<ruby> Text before <!-- Valid: ins can be inside ruby, and rt can be inside ruby --> <ins>Inserted text</ins> <rt>Pronunciation</rt> </ruby>
<ruby> Text before <!-- Valid: rt can be inside ruby, and ins can be inside rt --> <rt><ins>Pronunciation</ins></rt> </ruby>
Прозрачность — это модель содержимого, а не категория содержимого, поэтому она определяет только то, что может содержать элемент, но не то, где этот элемент можно разместить. То есть при определении допустимости дочерних элементов нельзя «смотреть сквозь» прозрачные дочерние элементы. Например, элемент <ul> допускает только элементы <li> и элементы, поддерживающие скрипты, и не допускает <del> или <ins>, даже если <del> содержит только элементы <li>.
<ul>
<del>
<li>Oranges</li>
<li>Toilet paper</li>
</del>
<li>Toothpaste</li>
</ul>
<ul> <li><del>Oranges</del></li> <li><del>Toilet paper</del></li> <li>Toothpaste</li> </ul>
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Content_categories