) — это все теги, используемые в
, то есть почти все в целом, за исключением некоторых мета-тегов;
Как правильно верстать в 2022 году. Часть 2. Как правильно вкладывать теги друг в друга
Привет хабр! Меня зовут Николай и я Frontend-разработчик в логистическом стартапе Relog. Хочу рассказать о самых распространённых ошибках в вёрстке современных проектов.
В этой статье мы говорим о вложении тегов друг в друга, так как это один из неочевидных моментов, в котором многие новички часто делают ошибки.
Также я расскажу о работе со спецификацией HTML — какие разделы важны для нас, как для верстальщиков и как искать там информацию.
Содержание
-
Используйте правильные теги
-
Как правильно вкладывать теги друг в друга
-
Работа с медиаконтентом
-
Пишем таблицы на HTML правильно
-
a или button? Работа с интерактивными элементами и как выбрать правильный тег
-
Различный теги для медиа-контента
-
Прекратите писать велосипеды! Как мы можем стилизовать дефолтные HTML-элементы
-
Пишем доступные формы
-
Избыточная вёрстка. Как облегчить разметку
-
Современные фишки HTML и CSS способные облегчить нам жизнь
-
Экспериментальные технологии, входящие в стандарт
Как правильно вкладывать теги друг в друга
Что значит правильно? Что является источником истины при работе с HTML? Конечно же это специфиакция! В данный момент существует так называемый «живой стандарт» пятой версии HTML. Это значит, что у него нет мажорных версий и он обновляется регулярно. Посмотреть последнее обновление спецификации можно здесь: https://html.spec.whatwg.org/
Спецификация HTML — это увесистый документ с кучей разделов. Она существует как для разработчиков браузеров, так и для нас — верстальщиков. Конкретно нас интересуют третий и четвёрный раздел (Semantics, structure, and APIs of HTML documents и The elements of HTML). Эти разделы описывают, как теги можно вкладывать друг в друга и что обозначает каждый тег.
Описание элемента
Каждый элемент имеет метаинформацию и описание.
Сверху размещены метаданные, куда включна следующая информация:
-
куда можно вкладывать тег;
-
какие теги можно вкладывать внутрь этого тега;
-
перечень аттрибутов тега (глобальные, дополнительные и ARIA);
-
информация о доступности;
-
вспомогательные данные.
Далее размещено описание тега — что он обозначает и как его можно использовать.
Спецификация элемента на примере тега
Метаданные тегаМетаданные тега
Метаинформация о теге включает в себя несколько пунктов:
-
Категории — обозначает, к каким типам тегов относится элемент, могут быть следующие типы:
-
Metadata content (например и
) — метаданные страницы, обозначающие представление или поведение содержимого, или отношение к другим документам; -
Flow content (например
, , -
Sectioning content (например
) — какие-либо большие секции, как правило имеющие конкретную структуру и заголовок; -
Heading content (все заголовки
–
, а также тег, про который я забыл рассказать в прошлой статье — ) — определяет заголовок секции, обозначенной явно, либо .
-
Phrasing content (например , , ) — различный, в основном текстовый контент, но включающий также некоторые элементы, которые позволяют размечать текст на уровне параграфов;
-
Embedded content (например
-
Interactive content (например ,
-
-
Контекст использования элемента — где мы можем размещать элемент.
-
Контентная модель — важная для этой статьи часть! Это как раз то, что мы можем размещать внутри тега.
-
Tag omission — возможные сценарии, когда закрывающую часть тега можно опустить. Рекомендую не обращать внимания на этот раздел вообще, так как в современном вебе нормальной практикой является закрытие всех парных тегов.
-
Доступные аттрибуты тега.
-
Раздел, касающийся доступности. Надеюсь когда-нибудь дойдут руки написать о работе с доступностью в рамках спецификации.
-
DOM Interface — раздел, необходимый для JavaScript-разработчиков, подробно на нём останавливаться не будем.
И всё же, как правильно вкладывать теги друг в друга?Категории элементов по HTML-спецификации
Две основные категории тегов — это Metadata (метаданные) и Flow (поточные теги). Метаданные — это то что в основном входит в
, а Flow — то что можно положить в . Однако, некоторые мета-теги мы можем разместить в , поэтому они заходят на Flow-контент (например это