назад к статьям

Как сверстать сайт по макету

Содержание

Вступление

Привет! Представь, что ты открыл свой первый макет в Figma (например, такой). Что же делать дальше? Как распланировать процесс работы так, чтобы верстка была простой, гибкой и удобной? Давайте разбираться.

Первичный осмотр макета

Первым делом нужно осмотреть весь макет, чтобы сразу увидеть все подводные камни, одинаковые элементы и т.д. Смотрите по принципу "Большой блок - маленький блок", сперва обращая внимание на секции, а затем на внутренности этих секций.

Структура страницы

Выделите все структурные элементы страницы:

  1. <header> - шапка сайта
  2. <main> - главный контент на странице
  3. <section> - разделы страницы
  4. <footer> - подвал сайта

Далее стоит смотреть вглубь этих разделов, и здесь поможет известная всем схема Holy Grail Layout (англ. Святой Грааль). Так эту схему назвали верстальщики, ведь практически каждый сайт использует ее.

Holy Grail Layout
Как выглядит Holy Grail Layout

Схема эта конечно немного утрирована, и aside на сайте вы скорее всего не встретите, но общая концепция такова.

Внутренний контент

После разделения страницы на структурные блоки стоит посмотреть внутрь их - распознать, где ссылки, где абзацы, где выпадающее меню и т.д.

Отметьте себе:

  1. Заголовки - и заголовок всего документа, и отдельные - <h1>-<h6>
  2. Абзацы с текстом или просто мелкие надписи - <p> или <span>
  3. Фразовые элементы - изображения, ссылки, кнопки, видео, и так далее.

С этим помогут наши статьи Разбор базовых HTML-тегов и Семантические теги в HTML, или же мои видео на Youtube: Назначение HTML-тегов

Когда вы сделаете это, у вас уже будет готовая схема верстки.

Редактор кода

Подготовьте редактор кода к работе (это может быть VS Code):

  1. Установите плагин EditorConfig for VS Code, он нужен для написания кода в едином стиле
  2. Установите плагин Live Server для быстрого обновления страницы при сохранении

После этого подготовьте себе правильную структуру проекта. Как правило, она всегда одна:

Структура проекта
Типичная структура проекта

Скачать архив с базовой структурой проекта

Разметка

После подготовки проекта стоит приступить к его разметке, без стилей:

  1. Создайте страницу index.html (или используйте страницу из приложенной выше структуры)
  2. Разметьте всю страницу - ссылки, кнопки, заголовки и так далее
  3. Напишите правильный lang и <title> для страницы.

Не запутаться в тегах помогут наши статьи, ссылки на них размещены выше.

Базовая стилизация

Теперь нужно сделать базовую стилизацию проекта. Это - базовые сбросы и normalize.css, а также подключение шрифтов.

Normalize.css нужен, чтобы привести различия между элементами в разных браузерах к одному виду.

Базовый сброс, который я рекомендую для проектов:

html {
box-sizing: border-box;
}

*,
*::before,
*::after
{
box-sizing: inherit;
}

a {
color: inherit;
text-decoration: none;
}

img {
max-width: 100%;
}

body {
font-family: 'font', sans-serif;
}

Далее подключаем шрифты. Сейчас для всех проектов достаточно формата woff2:

@font-face {
font-family: 'Muller';
src: url('../fonts/MullerLight.woff2') format('woff2'),
url('../fonts/MullerLight.woff') format('woff');
font-display: swap;
font-weight: 300;
font-style: normal;
}

Помимо этого можно также набросать фон, кастомные свойства (css-переменные), начать выделять в отдельные классы одинаковые элементы.

Работа с графикой

На этом этапе можно вырезать всю графику из Figma, чтобы потом было проще работать. Необходимо помнить важные правила:

  1. Если изображение контентое (важное для повествования, смысла) - используем тег <img>
  2. Если же декоративное - есть два варианта. Если иконка будет менять цвет в результате действий пользователя - используйте тег <svg>, если нет - используйте background-image.

И также не забывайте о форматах изображений:

  1. Для изображений, не требующих прозрачности, используйте формат jpg
  2. Для изображений с прозрачным фоном - png
  3. Для иконок - svg

Также рекомендую использовать формат webp для лучшей оптимизации сайта.

Структурный CSS

Теперь пора переходить к тому, чтобы стилизовать структуру:

  1. Выделить контейнер
  2. Сделать сетку - разместить элементы на своих местах, сделать между ними отступы и т.д.

Для большой структурной стилизации (списки контента, карточки и т.д.) советую CSS Grid, для мелкой (меню и т.д.) - CSS FlexBox.

Декоративный CSS

Теперь стоит "допилить" стили проекта - полностью сделать все в соответствии с макетом, попутно добавляя различные декоративные элементы и так далее.

Адаптив

Последний этап перед продакшном - это адаптивная верстка. Проверьте, чтоб ваш сайт идеально смотрелся на любом устройстве. Здесь можно использовать:

  1. Media-запросы
  2. Элемент <picture> для создания адаптивных изображений
  3. Относительные единицы измерения, такие как % и т.д.

Впрочем, тема адаптива - отдельная сложная тема, которую не рассказать внутри одной статьи. Но вы можете посмотреть видео на моем канале: Адаптивная верстка

Заключение

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

Пользуйтесь небольшим чеклистом проверки проекта, чтобы все было в порядке.

Удачи в работе!

Полезные ссылки

  1. Макеты любой сложности
  2. Задачки на отработку навыков
  3. Адаптивная верстка сайта с нуля с пояснениями №1
  4. Адаптивная верстка сайта с нуля с пояснениями №2
предыдущий пост следующий пост