Семантические элементы HTML
Семантические элементы — это элементы, имеющие смысл.
Что такое семантические элементы?
Семантический элемент чётко описывает своё значение как браузеру, так и разработчику. Несемантические элементы, такие как <div> и <span>, ничего не говорят о своём содержимом, тогда как семантические элементы, такие как <img>, <table> и <article>, чётко определяют своё.
Семантические элементы в HTML
Многие сайты используют универсальную разметку, например div, для навигации, шапки и подвала. Вместо этого в HTML есть семантические элементы для этих частей: <article>, <aside>, <details>, <figcaption>, <figure>, <footer>, <header>, <main>, <mark>, <nav>, <section>, <summary> и <time>.
Элемент HTML <section>
Элемент <section> определяет раздел документа. Bootstrap описывает раздел как тематическую группу контента, обычно с заголовком, например главы, введение, новости или контактную информацию.
Пример
Два раздела в документе.
Результат: полная HTML-страница
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Элемент Section</title>
</head>
<body>
<section>
<h1>WWF</h1>
<p>Всемирный фонд природы (WWF) — международная организация, работающая над вопросами охраны, исследования и восстановления окружающей среды, ранее называвшаяся World Wildlife Fund. WWF был основан в 1961 году.</p>
</section>
<section>
<h1>Символ панды WWF</h1>
<p>Панда стала символом WWF. Известный логотип с пандой WWF произошёл от панды по имени Чи Чи, переведённой из пекинского зоопарка в лондонский зоопарк в тот же год, когда был основан WWF.</p>
</section>
</body>
</html>
Элемент HTML <article>
Элемент <article> содержит независимый, самодостаточный контент, который должен иметь смысл сам по себе и может распространяться отдельно, например записи форума, посты блога, комментарии пользователей, карточки товаров или газетные статьи.
Три статьи
Три самодостаточные статьи о браузерах.
Результат: полная HTML-страница
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Элемент Article</title>
</head>
<body>
<article>
<h2>Google Chrome</h2>
<p>Google Chrome — это веб-браузер, разработанный компанией Google, выпущенный в 2008 году. Сегодня Chrome — самый популярный веб-браузер в мире!</p>
</article>
<article>
<h2>Mozilla Firefox</h2>
<p>Mozilla Firefox — это веб-браузер с открытым исходным кодом, разработанный Mozilla. Firefox является вторым по популярности веб-браузером с января 2018 года.</p>
</article>
<article>
<h2>Microsoft Edge</h2>
<p>Microsoft Edge — это веб-браузер, разработанный компанией Microsoft, выпущенный в 2015 году. Microsoft Edge заменил Internet Explorer.</p>
</article>
</body>
</html>
Оформлено с помощью CSS
Вложенные статьи, оформленные с помощью CSS.
Результат: полная HTML-страница
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.all-browsers {
margin: 0;
padding: 5px;
background-color: lightgray;
}
.all-browsers > h1, .browser {
margin: 10px;
padding: 5px;
}
.browser {
background: white;
}
.browser > h2, p {
margin: 4px;
font-size: 90%;
}
</style>
</head>
<body>
<article class="all-browsers">
<h1>Самые популярные браузеры</h1>
<article class="browser">
<h2>Google Chrome</h2>
<p>Google Chrome — это веб-браузер, разработанный компанией Google, выпущенный в 2008 году. Сегодня Chrome — самый популярный веб-браузер в мире!</p>
</article>
<article class="browser">
<h2>Mozilla Firefox</h2>
<p>Mozilla Firefox — это веб-браузер с открытым исходным кодом, разработанный Mozilla. Firefox является вторым по популярности веб-браузером с января 2018 года.</p>
</article>
<article class="browser">
<h2>Microsoft Edge</h2>
<p>Microsoft Edge — это веб-браузер, разработанный компанией Microsoft, выпущенный в 2015 году. Microsoft Edge заменил Internet Explorer.</p>
</article>
</article>
</body>
</html>
Вложение <article> в <section> или наоборот?
Элемент <article> содержит независимый самодостаточный контент, а элемент <section> определяет раздел. Могут ли определения подсказать, как их вкладывать друг в друга? Нет. Вы найдёте страницы с элементами <section>, содержащими элементы <article>, и наоборот.
Элемент HTML <header>
Элемент <header> — это контейнер для вводного содержимого или набора навигационных ссылок. Обычно содержит один или несколько заголовков, логотип или значок и информацию об авторстве.
Примечание: В одном документе может быть несколько элементов <header>, но <header> нельзя размещать внутри <footer>, <address> или другого <header>.
Пример
Заголовок внутри статьи.
Результат: полная HTML-страница
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Элемент Header</title>
</head>
<body>
<article>
<header>
<h1>Чем занимается WWF?</h1>
<p>Миссия WWF:</p>
</header>
<p>Миссия WWF — остановить деградацию природной среды нашей планеты и построить будущее, в котором люди живут в гармонии с природой.</p>
</article>
</body>
</html>
Элемент HTML <footer>
Элемент <footer> определяет подвал для документа или раздела. Обычно содержит информацию об авторстве, авторских правах и контактах, карту сайта, ссылки «наверх» или связанные документы. В одном документе может быть несколько элементов <footer>.
Пример
Подвал с информацией об авторе и контактах.
Результат: полная HTML-страница
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Элемент Footer</title>
</head>
<body>
<footer>
<p>Автор: Hege Refsnes</p>
<p><a href="mailto:[email protected]">[email protected]</a></p>
</footer>
</body>
</html>
Элемент HTML <nav>
Элемент <nav> определяет набор навигационных ссылок. Не каждая ссылка принадлежит <nav>; он предназначен только для крупных блоков навигации. Программы чтения с экрана могут использовать его, чтобы решить, пропускать ли этот контент сначала.
Пример
Набор навигационных ссылок.
Результат: полная HTML-страница
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Элемент Nav</title>
</head>
<body>
<nav>
<a href="/html/">HTML</a> |
<a href="/css/">CSS</a> |
<a href="/js/">JavaScript</a> |
<a href="/jquery/">jQuery</a>
</nav>
</body>
</html>
Элемент HTML <aside>
Элемент <aside> содержит контент, обособленный от окружающего содержимого, например боковую панель. Он должен быть лишь косвенно связан с окружающим содержимым.
Простой aside
Aside рядом с абзацем.
Результат: полная HTML-страница
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Элемент Aside</title>
</head>
<body>
<p>Этим летом мы с семьёй посетили центр Epcot. Погода была отличной, и Epcot был потрясающим! У меня было прекрасное лето вместе с семьёй!</p>
<aside>
<h4>Центр Epcot</h4>
<p>Epcot — это тематический парк в Walt Disney World Resort с захватывающими аттракционами, международными павильонами, отмеченными наградами фейерверками и сезонными специальными мероприятиями.</p>
</aside>
</body>
</html>
Оформлено с помощью CSS
Aside, оформленный как плавающая боковая панель.
Результат: полная HTML-страница
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
aside {
width: 30%;
padding-left: 15px;
margin-left: 15px;
float: right;
font-style: italic;
background-color: lightgray;
}
</style>
</head>
<body>
<p>Этим летом мы с семьёй посетили центр Epcot. Погода была отличной, и Epcot был потрясающим! У меня было прекрасное лето вместе с семьёй!</p>
<aside>
<p>Центр Epcot — это тематический парк в Walt Disney World Resort с захватывающими аттракционами, международными павильонами, отмеченными наградами фейерверками и сезонными специальными мероприятиями.</p>
</aside>
<p>Этим летом мы с семьёй посетили центр Epcot. Погода была отличной, и Epcot был потрясающим! У меня было прекрасное лето вместе с семьёй!</p>
<p>Этим летом мы с семьёй посетили центр Epcot. Погода была отличной, и Epcot был потрясающим! У меня было прекрасное лето вместе с семьёй!</p>
</body>
</html>
Элементы HTML <figure> и <figcaption>
Тег <figure> содержит самодостаточный контент, такой как иллюстрации, диаграммы, фотографии или листинги кода. Тег <figcaption> задаёт подпись к figure, размещаясь как первый или последний дочерний элемент, а элемент <img> — само изображение.
Пример
Изображение с подписью figure.
Результат: полная HTML-страница
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Элемент Figure</title>
</head>
<body>
<figure>
<img src="pic_trulli.jpg" alt="Trulli">
<figcaption>Рис.1. - Трулли, Апулия, Италия.</figcaption>
</figure>
</body>
</html>
Зачем нужны семантические элементы?
По данным Bootstrap, семантический веб позволяет обмениваться данными и повторно использовать их между приложениями, предприятиями и сообществами. Семантические элементы помогают описать смысл контента, а не только его внешний вид.
Семантические элементы в HTML
Некоторые семантические элементы и их назначение: <article> (независимый контент), <aside> (контент, обособленный от страницы), <details> (детали, которые пользователь может показать или скрыть), <figcaption> (подпись к figure), <figure> (самодостаточный контент, например фото), <footer> (подвал), <header> (шапка), <main> (основной контент), <mark> (выделенный текст), <nav> (навигационные ссылки), <section> (раздел), <summary> (заголовок для details) и <time> (дата или время).