Урок 8 из 8 · 25 мин · обновлено

Собираем страницу целиком и что учить дальше

Сборка небольшой страницы от разметки до адаптивных стилей, проверка качества вёрстки и следующие шаги после основ HTML и CSS.

План сборки

Соберём небольшую страницу пиццерии: шапка, первый экран, карточки, подвал. Порядок работы, которому следуют верстальщики:

  1. Разметка по смыслу — семантические теги, без мыслей об оформлении.
  2. Базовые стили — то, что нужно любому проекту.
  3. Блоки по очереди — сверху вниз, от общего к частному.
  4. Адаптивность — проверка на узком и широком экране.

Шаг 1: разметка

HTML
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Пиццерия «Тесто»</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <header class="header container">
    <a class="logo" href="/">Тесто</a>
    <nav class="menu">
      <a href="#menu">Меню</a>
      <a href="#contacts">Контакты</a>
    </nav>
  </header>

  <main>
    <section class="hero container">
      <h1>Неаполитанская пицца за 10 минут</h1>
      <p>Тесто созревает 48 часов, а печь разогрета до 450 градусов.</p>
      <a class="button" href="#menu">Выбрать пиццу</a>
    </section>

    <section class="container" id="menu">
      <h2>Меню</h2>
      <div class="cards">
        <article class="card">
          <h3>Маргарита</h3>
          <p>Томаты, моцарелла, базилик</p>
          <p class="price">450 ₽</p>
        </article>
        <article class="card">
          <h3>Пепперони</h3>
          <p>Томаты, моцарелла, пепперони</p>
          <p class="price">590 ₽</p>
        </article>
        <article class="card">
          <h3>Четыре сыра</h3>
          <p>Моцарелла, горгонзола, пармезан, чеддер</p>
          <p class="price">650 ₽</p>
        </article>
      </div>
    </section>
  </main>

  <footer class="container" id="contacts">
    <p>Москва, ул. Садовая, 12 · с 11:00 до 23:00</p>
  </footer>
</body>
</html>

Уже на этом этапе страница полностью понятна — просто без оформления.

Шаг 2: базовые стили и переменные

CSS
:root {
  --accent: #2d5a44;
  --text: #18201c;
  --muted: #5d685f;
  --radius: 12px;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: Arial, sans-serif;
  line-height: 1.5;
  color: var(--text);
}

img {
  max-width: 100%;
  height: auto;
}

.container {
  max-width: 1080px;
  margin: 0 auto;
  padding: 0 16px;
}

CSS-переменные в :root хранят повторяющиеся значения: фирменный цвет, радиус скругления. Используют их через var(--accent). Решили сменить цвет бренда — правите одну строку.

Шаг 3: блоки

CSS
.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 16px;
  padding-bottom: 16px;
}

.menu {
  display: flex;
  gap: 24px;
}

.hero {
  padding-top: 48px;
  padding-bottom: 48px;
}

.button {
  display: inline-block;
  padding: 12px 24px;
  border-radius: var(--radius);
  background-color: var(--accent);
  color: white;
  text-decoration: none;
}

.cards {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.card {
  padding: 20px;
  border: 1px solid #d5dbd0;
  border-radius: var(--radius);
}

.price {
  font-weight: bold;
  color: var(--accent);
}

Шаг 4: адаптивность

CSS
@media (min-width: 768px) {
  .cards {
    flex-direction: row;
  }

  .card {
    flex: 1;
  }
}

На телефоне карточки идут столбцом, от 768px — в ряд и делят ширину поровну.

Проверка качества

Прежде чем сдавать вёрстку, пройдитесь по короткому списку:

  • Разные экраны. Режим устройства в браузере: от 320px до широкого монитора. Ничего не вылезает за край, текст читается.
  • Клавиатура. Пройдите страницу клавишей Tab: ссылки и кнопки выделяются по очереди, фокус виден.
  • Картинки. У каждой есть alt, а у декоративных — пустой alt="".
  • Валидатор. Сервис validator.w3.org покажет ошибки в разметке: незакрытые теги, лишние атрибуты.

Что учить дальше

Вы освоили основу, на которой стоит любая вёрстка. Следующие шаги:

  1. CSS Grid — раскладка сеткой из строк и колонок. Вместе с Flexbox закрывает почти все задачи.
  2. Вёрстка по макетам. Дизайнеры рисуют макеты в Figma — научитесь переносить их в код точно.
  3. JavaScript — чтобы страница реагировала на действия: меню, вкладки, формы. На сайте есть вводный курс «Основы JavaScript».
  4. Git и GitHub — хранить код и публиковать сайты бесплатно через GitHub Pages. Об этом — курс «Git и GitHub для начинающих».
  5. Портфолио. Две-три свёрстанные страницы, опубликованные по ссылке, говорят работодателю больше, чем строчка «знаю HTML и CSS».

Попробуйте сами. Добавьте на страницу пиццерии раздел «Доставка» с тремя пунктами: «30 минут», «Бесплатно от 1000 ₽», «Горячей в термосумке». На телефоне пункты идут столбцом, от 768px — в ряд. Используйте переменные для цвета.

Решение
HTML
<section class="container">
  <h2>Доставка</h2>
  <ul class="perks">
    <li>30 минут</li>
    <li>Бесплатно от 1000 ₽</li>
    <li>Горячей в термосумке</li>
  </ul>
</section>
CSS
.perks {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 0;
  list-style: none;
}

.perks li {
  padding: 16px;
  border-radius: var(--radius);
  background-color: #e1ebe3;
  color: var(--accent);
  font-weight: bold;
}

@media (min-width: 768px) {
  .perks {
    flex-direction: row;
  }

  .perks li {
    flex: 1;
  }
}

list-style: none и padding: 0 убирают маркеры и стандартный отступ списка: по смыслу это всё ещё список, а выглядит как ряд плашек.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. С чего правильнее начинать вёрстку страницы?

  2. Что такое CSS-переменная --accent: #2d5a44 и как её использовать?

  3. Как быстро проверить, что страницей можно пользоваться без мыши?

  4. Какая технология раскладки дополняет Flexbox и удобна для двумерных сеток?