Урок 8 из 8 · 25 мин · обновлено
Собираем страницу целиком и что учить дальше
Сборка небольшой страницы от разметки до адаптивных стилей, проверка качества вёрстки и следующие шаги после основ HTML и CSS.
План сборки
Соберём небольшую страницу пиццерии: шапка, первый экран, карточки, подвал. Порядок работы, которому следуют верстальщики:
- Разметка по смыслу — семантические теги, без мыслей об оформлении.
- Базовые стили — то, что нужно любому проекту.
- Блоки по очереди — сверху вниз, от общего к частному.
- Адаптивность — проверка на узком и широком экране.
Шаг 1: разметка
<!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: базовые стили и переменные
: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: блоки
.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: адаптивность
@media (min-width: 768px) {
.cards {
flex-direction: row;
}
.card {
flex: 1;
}
}
На телефоне карточки идут столбцом, от 768px — в ряд и делят ширину поровну.
Проверка качества
Прежде чем сдавать вёрстку, пройдитесь по короткому списку:
- Разные экраны. Режим устройства в браузере: от 320px до широкого монитора. Ничего не вылезает за край, текст читается.
- Клавиатура. Пройдите страницу клавишей Tab: ссылки и кнопки выделяются по очереди, фокус виден.
- Картинки. У каждой есть
alt, а у декоративных — пустойalt="". - Валидатор. Сервис validator.w3.org покажет ошибки в разметке: незакрытые теги, лишние атрибуты.
Что учить дальше
Вы освоили основу, на которой стоит любая вёрстка. Следующие шаги:
- CSS Grid — раскладка сеткой из строк и колонок. Вместе с Flexbox закрывает почти все задачи.
- Вёрстка по макетам. Дизайнеры рисуют макеты в Figma — научитесь переносить их в код точно.
- JavaScript — чтобы страница реагировала на действия: меню, вкладки, формы. На сайте есть вводный курс «Основы JavaScript».
- Git и GitHub — хранить код и публиковать сайты бесплатно через GitHub Pages. Об этом — курс «Git и GitHub для начинающих».
- Портфолио. Две-три свёрстанные страницы, опубликованные по ссылке, говорят работодателю больше, чем строчка «знаю HTML и CSS».
Попробуйте сами. Добавьте на страницу пиццерии раздел «Доставка» с тремя пунктами: «30 минут», «Бесплатно от 1000 ₽», «Горячей в термосумке». На телефоне пункты идут столбцом, от 768px — в ряд. Используйте переменные для цвета.
Решение
<section class="container">
<h2>Доставка</h2>
<ul class="perks">
<li>30 минут</li>
<li>Бесплатно от 1000 ₽</li>
<li>Горячей в термосумке</li>
</ul>
</section>
.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 убирают маркеры и стандартный отступ списка: по смыслу это всё ещё список, а выглядит как ряд плашек.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
С чего правильнее начинать вёрстку страницы?
Сначала строят каркас из семантических тегов, потом оформляют. Так структура не зависит от дизайна, и её легко перекрасить.
-
Что такое CSS-переменная --accent: #2d5a44 и как её использовать?
Переменные хранят повторяющиеся значения. Поменяли цвет в одном месте — он поменялся на всём сайте.
-
Как быстро проверить, что страницей можно пользоваться без мыши?
Многие люди пользуются клавиатурой вместо мыши. Если фокус не виден или прыгает хаотично, страница для них неудобна.
-
Какая технология раскладки дополняет Flexbox и удобна для двумерных сеток?
Flexbox хорош для раскладки в одну линию, а Grid — для сеток со строками и колонками одновременно. В работе используют оба.