1. 7. 2. Шаг 1. Выделяем крупные смысловые блоки на каждой странице сайта

Шаг 1. Выделяем крупные смысловые блоки на каждой странице сайта

Типичный список блоков: Шапка, Подвал и Основное содержимое или, если перевести это на язык тегов, <header>, <footer> и <main>.

Вспомним назначение каждого из указанных семантических тегов:

  • <header> — это вводная часть всего документа или одного из его разделов;

  • <main> — основное содержимое страницы — то, что не повторяется на других страницах, уникальное содержимое каждой страницы;

  • <footer> — это заключительная часть всего сайта или смыслового раздела со справочной информацией.

Про футер и хедер подробнее

В русском языке прижилась традиция называть <footer> «подвалом» и считать, что это «то, что внизу и содержит копирайт». Но мы изучаем и практикуем семантический подход к разметке, а он определяет элементы по их содержанию, а не по расположению.

Итак, что такое футер? Это поточный элемент, в который обычно помещается информация об авторе, копирайты, ссылки на связанные документы, лицензионную информацию, индексы, приложения и подобный контент. А ещё адреса, навигация, ссылки на главную — огромное количество информации. Кроме того, у секций, например, у <article>, может быть свой футер, а у сайта вообще — свой, другой. Футер относится к своему непосредственному родительскому элементу.

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

Вот пример с сайта Академии:

<article>
  <div class="post-head" style="background-image: url('bg-image.jpg');">
    <h1>Туториал. Интерактивная SVG-диаграмма</h1>
  </div>
  <footer class="meta">
    <ul class="post-info">
      <li class="post-info-item">
        <time class="post-info-value post-info-value-datetime" datetime="2020-03-27"> 27 марта 2020</time>
      </li>
      <li class="post-info-item">
        <span class="post-info-value post-info-value-readtime">17 мин</span>
      </li>
      <li class="post-info-item">
        <span class="post-info-value post-info-value-visits">4 275</span>
      </li>
    </ul>
    <p class="post-tags">
      <a href="#" alt="Ссылка на тему">Фронтенд</a>
    </p>
    <div class="post-author">
      <p class="author-text">Автор <a href="#">Саша Смыгина</a></p>
      <a class="author-pic" href="#"><img src="author-pic.jpg" width="50" height="50" alt="Портрет Саши Смыгиной"></a>
    </div>
  </footer>
  <p>Сейчас все активно обсуждают радости и гадости удалённой работы, и мы даже выпустили статью на эту тему. А ещё провели небольшой опрос и попросили наших пользователей рассказать, с какими трудностями они сталкиваются во время работы дома (спойлер — все ленятся). Статистику нужно как-то красиво оформить, так почему бы не сделать SVG-график? Заодно научимся чему-нибудь новому. Поехали!</p>
</article>

Некоторые виды информации, вроде навигации или метаданных поста, могут быть помещены в футер, в хедер, в оба или ни в один.

Так, раз футер — это не «подвал» сайта, то, может, и хедер — не шапка? Вы не поверите. Спецификация говорит нам о хедере, что это элемент для группировки навигации и вводного контента. Хедер относится к своему непосредственному родительскому элементу, то есть у отдельных секций могут быть свои хедеры, а хедер, помещённый непосредственно в <body>, относится ко всей странице.

<body>
  <header>
    <h1>Основной заголовок страницы</h1>
    <nav>
      <ul>
        <li>Пункт меню</li>
        <li>Ещё пункт меню</li>
      </ul>
    </nav>
    <img src="/logo.svg" width="100" alt="Логотип компании">
  </header>
...
</body>

Спецификация позволяет использовать группировки заголовков с помощью тега <hgroup>, но мы советуем этого не делать, потому что это противоречит принципу последовательности заголовков и влияет на семантическую структуру документа.

Мы наглядно продемонстрируем процесс определения этих блоков, для этого понадобится, как минимум, две страницы сайта.

Рассмотрим макет главной страницы и страницы каталога сайта интернет-магазина Nёrds:

Макет главной страницы сайта

После анализа макетов легко определить, что станет шапкой сайта, основным содержимым, уникальным для каждой страницы, и подвалом сайта. В итоге получим следующий результат:

Прямоугольниками синего цвета мы выделили крупные смысловые блоки.

Структура страницы в разметке на этом этапе такая:

<!DOCTYPE html>
<html lang="ru">
  <head>
    <meta charset="utf-8">
    <title>Заголовок страницы</title>
  </head>
  <body>
    <header class="main-header">
      <!-- Шапка сайта -->
    </header>
    <main>
      <!-- Основное содержимое страницы -->
    </main>
    <footer class="main-footer">
      <!-- Подвал сайта -->
    </footer>
  </body>
</html>

Замечание

С помощью атрибута class ещё на этапе разметки можно уточнить, какую роль элемент будет играть на странице. К примеру, чтобы подчеркнуть, что тег <header> — это шапка всего документа, добавим ему атрибут class со значением main-header

Last updated