Семантический html
Содержание
Базовый шаблон страницы
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Заголовок страницы</title>
</head>
<body>
</body>
</html>
О чем нужно помнить
- Doctype должен быть, иначе браузеры будут работать в режиме совместимости
- lang=”ru” должен быть указан обязательно, и указывает на каком языке написан текст на странице. Это очень важно.
- В теге
title
, должен быть только текст - У тега body имеются стили по умолчанию “margin: 8px”
Семантические элементы
Далее в примерах буду указывать, то что внутри body
main
В теге main
указывается уникальный контент на странице.
<main>
<h1>О команде</h1>
<p>Какой-то важный тест</p>
</main>
- Желательно оборачивать весь уникальный контент в тег
main
- Меню, ссылки боковые панели оставить за пределами этого тега
- Наличие этого тега очень важно для мобильных браузеров. Благодаря ему можно на телефоне можно включить “Режим чтения”
- На странице разрешено использовать только один тег
main
- Содержимое не должно нигде больше повторятся на сайте
Например, 2 страницы с разным содержимым
<!-- Страница с товаром 1-->
<main>
<h1>Товар 1</h1>
<p>Какой-то важный тест о товаре 1</p>
</main>
<!-- Страница с товаром 2-->
<main>
<h1>Товар 2</h1>
<p>Какой-то важный тест о товаре 2</p>
</main>
section
Элемент section
используется для выделения раздела документа
<section>
<h1>Карточка 1</h1>
<p>Съешь ещё этих мягких французских булок, да выпей чаю.</p>
</section>
<section>
<h1>Карточка 2</h1>
<p>Съешь ещё этих мягких французских булок, да выпей чаю.</p>
</section>
<section>
<h1>Карточка 3</h1>
<p>Съешь ещё этих мягких французских булок, да выпей чаю.</p>
</section>
- Внутри
section
должен быть заголовок - Элементы
section
можно вкладывать друг в друга - Раздел
section
предназначен для информации, а не для стилизации, если нужно стилизовать используйтеdiv
- Если в секции по какой-то причине нет заголовка, то используйте
div
- Элементы
section
делят контент на логические части и оборачивают большие логические блоки на странице - Не рекомендуется размещать на странице больше одного заголовка
h1
, хотя это не запрещено спецификацией
<main>
<p>Общая информация</p>
<section>
<h2></h2>
</section>
<section>
<h2></h2>
</section>
<section>
<h2></h2>
</section>
<section>
<h2></h2>
</section>
<section>
<h2></h2>
</section>
</main>
nav
Контейнер для элементов навигации
<nav class="menu">
<ul>
<li><a href="#">Главная</a></li>
<li><a href="#">О нас</a></li>
<li><a href="#">Контакты</a></li>
</ul>
</nav>
- На странице возможно использовать несколько элементов
nav
- По спецификации достаточно обернуть в
nav
только основной блок навигации, а не все ссылки на странице - Важно выделить функциональный блок ссылок
article
Описывает самодостаточный раздел документа, который без проблем можно разместить на другом сайте
<article>
<h1>Уникальная статья</h1>
</article>
- Содержимое тега
article
это какая-то конкретная законченная сущность, например товар, статья, карточка пользователя - Важно отличать
section
(часть раздела) отarticle
(самодостаточный элемент документа) - Можно вкладывать друг в друга
<article class="forecast">
<h1>Погода в Москве</h1>
<article class="day-forecast">
<h2>03 March 2018</h2>
<p>Rain.</p>
</article>
<article class="day-forecast">
<h2>04 March 2018</h2>
<p>Periods of rain.</p>
</article>
<article class="day-forecast">
<h2>05 March 2018</h2>
<p>Heavy rain.</p>
</article>
</article>
aside
Используется для части содержимого, которое связано с основным контентом лишь косвенно.
<aside class="doc__feedback-form">
<h2>Форма обратной связи</h2>
<form>
</form>
</aside>
- Это все, что не имеет прямого отношения к основному содержимому сайта.
- Может использоваться для боковой колонки сайта(но не обязательно), последний комментарий, поиск, форма обратной связи, список тегов
- Рекомендуется писать его на одном уровне с
main
иarticle
header
Нужен для создания шапки чего-либо
<header>
<nav>
<a href="#">Мои работы</a>
<a href="#">Мои навыки</a>
<a href="#">Контакты</a>
</nav>
</header>
- На странице может быть несколько элементов
header
, но их нельзя помещать в другие элементыheader
- По-хорошему, шапка должна быть единой для всего сайта.
footer
“Подвал сайта”
<article>
<h1>Название раздела</h1>
<p></p>
<footer>
<p>Автор</p>
<p>Почта:</p>
</footer>
</article>
- В “подвале” чаще всего отображают ссылки на другие страницы на сайте, название компании и прочее
footer
может быть не только у всего сайта целиком, но и у отдельного блока или секции.- Финальная часть сайта или блока
Другие элементы
h1-h6
Просто уровни заголовков на сайте
- Не пропускайте уровни заголовков после
h1
идетh2
и тд… - Поисковики часто смотрят на уровни заголовков во всем документе
- С помощью заголовков создают оглавления и именно так и нужно для поисковых машин
- Стараться
h1
не использовать более одного раза на сайте - Выбирайте какой уровень заголовка использовать по смыслу, а не по внешнему виду
- Главное придерживаться иерархии
- Теги заголовков должны соответствовать ключевым запросам пользователя
- В боковых меню и колонках не стоит использовать
h1
-h6
<h1>Заголовок 0</h1>
<section>
<h2>Заголовок 1</h2>
</section>
<section>
<h2>Заголовок 2</h2>
</section>
<section>
<h2>Заголовок 3</h2>
<section>
<h3>Заголовок 3.1</h3>
<section>
<h4>Заголовок 3.2</h4>
<section>
<h5>Заголовок 3.3</h5>
<section>
<h6>Заголовок 3.4</h6>
</section>
</section>
</section>
</section>
</section>
<section>
<h2>Заголовок 4</h2>
</section>
div
div
- это элемент группировки, универсальный элемент.
- Подходит только в том случае, если не нашелся подходящий семантический элемент, лучше используйте другие элементы
<div
— это универсальный блок, не несущий семантического смысла
p
Используется для разметки абзаца
- Внутри блока может находиться любой текстовый контент.
- Абзац - это логическая единица текста.
- Оборачивайте в
p
, законченную мысль или несколько предложений, но не одно слово
blockquote
Разметка цитат
<blockquote>
<p>
Ваша работа заполнит большую часть жизни и единственный способ быть
полностью довольным — делать то, что по-вашему является великим делом.
И единственный способ делать великие дела — любить то, что вы делаете.
</p>
</blockquote>
- Сам элемент
blockquote
не размечает текст - Поисковики понимают что это блок с цитатой
span
Используется для стилизации части текста, но для выделения текста лучше использовать семантические элементы предназначенные для этого
- Удобен для выделения одного слова, или буквы
b
Используется для выделения текста, или слова исключительно для оформления и не более
- Важно понимать что
b
просто оформляет текст соответствующим образом, напротивstrong
выделяет важное.
strong
Семантически выделяет важный фрагмент текста.
- Не используйте
strong
для визуального выделения текста - Элемент
strong
можно использовать в заголовке, комментарии или абзаце, чтобы отличить действительно важную информацию от других частей: подробностей, отступлений или шаблонов - Элемент
strong
можно использовать для обозначения предупреждения или предостережения. - Элемент
strong
можно использовать для обозначения содержимого, которое пользователь должен увидеть раньше, чем другие части документа.
em
Смысловое выделение куска текста
i
Отрывок текста, выделяемый, в том числе интонационно, или выпадающий из общего ряда повествования.
- Подойдет для разметки в тексте какого-то необычного названия
Пример семантической верстки
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Заголовок страницы</title>
</head>
<body>
<header>
<nav>
<a href="">
<img src="" alt="Логотип">
</a>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</nav>
</header>
<main>
<section>
<h2>Заголовок секции</h2>
</section>
<section>
<h2>Заголовок секции</h2>
</section>
<section>
<h2>Заголовок секции</h2>
</section>
<section>
<h2>Заголовок секции</h2>
<article></article>
<article></article>
<article></article>
<article></article>
</section>
</main>
<aside>Боковая часть сайта</aside>
<footer></footer>
</body>
</html>