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

Поточная вёрстка — это способ компоновки элементов, когда на веб-странице элементы располагаются в том же порядке, что и в коде HTML. Этот метод вёрстки в силу своей простоты применяется к ограниченному типу макетов, где элементы идут друг за другом сверху вниз и слева направо.

На рис. 1 показан пример карточки с вертикальным расположением текста.

Рис. 1. Карточка

Прежде чем приступить к самой вёрстке, эту картинку следует сперва проанализировать и понять, из каких блоков она состоит. Затем произвести деление на эти блоки. Здесь нет чётких правил, поэтому можно придерживаться разных подходов. Вот некоторые из них.

1. Применяются крупные блоки, содержащие в себе блоки поменьше. На рис. 2 такие блоки схематично обозначены красной рамкой.

Рис. 2. Деление карточки на крупные блоки

Всего у нас здесь три блока, для каждого из них в HTML используем блочный элемент <div> с каким-нибудь классом.

<div class="card">
  <div class="card-price">…</div>
  <div class="card-plan">…</div>
  <div class="card-offer">…</div>
</div>

2. Каждая строка считается самостоятельным блоком (рис. 3), при этом она не содержит вложений.

Рис. 3. Деление карточки на мелкие блоки

Здесь можно использовать блочные элементы <div> и <p>. Если какому-то элементу требуется задать стили, то к нему удобнее добавить стилевой класс и обращаться по имени класса.

<div class="card">
  <div class="card-price">560 ₽</div>
  <div class="card-month">В месяц</div>
  <div class="card-plan">Бизнес</div>
  <p>15 Проектов</p>
  <p>40 ГБ Диск</p>
  <p>Неограниченный трафик</p>
  <p>AI Конструктор</p>
  <p>Антивирус</p>
  <p class="card-button"><button>Попробовать</button></p>
</div>

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

Давайте более подробно рассмотрим первый подход к формированию HTML-кода, когда используются крупные блоки, содержащие внутри другие блоки. Так мы будем переходить от общего к частному, от большего к меньшему.

Начинается, естественно, с родительского элемента нашей карточки.

<div class="card">…</div>

Карточка будет содержать три блока — цена, название и список с кнопкой.

<div class="card">
  <div class="card-price">…</div>
  <div class="card-plan">…</div>
  <div class="card-offer">…</div>
</div>

Первый блок с ценой мы разбиваем на два подблока — цена и текст.

<div class="card-price">
  <div class="card-price-value">560 ₽</div>
  <div class="card-price-month">В месяц</div>
</div>

Второй блок содержит только название карточки.

<div class="card-plan">Бизнес</div>

В третьем блоке будет список <ul> и кнопка <button>. Список удобен для всяческих перечислений, но следует помнить, что у него есть свой собственный стиль, который предварительно следует сбросить.

<div class="card-offer">
 <ul class="card-offer-list">
  <li>15 Проектов</li>
  <li>40 ГБ Диск</li>
  <li>Неограниченный трафик</li>
  <li>AI Конструктор</li>
  <li>Антивирус</li>
 </ul>
 <div><button class="card-offer-button">Попробовать</button></div>
</div>

Все блоки, которые мы используем для этой карточки, самостоятельно располагаются нужным нам образом. Поэтому в стилях остаётся только красиво оформить элементы — задать им шрифт, цвет текста и фона, добавить скругление кнопке и установить вертикальные промежутки (пример 1).

Пример 1. Вёрстка карточки

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Карточка</title> <style> body { font-family: Arial, Helvetica, sans-serif; /* Шрифт */ } .card { width: 300px; /* Ширина карточки */ background: #edf6ff; /* Цвет фона */ color: #939faa; /* Цвет текста */ text-align: center; /* Выравнивание по центру */ } .card-price, .card-plan, .card-offer, .card-offer-button { padding: 1rem; /* Пространство вокруг текста */ } .card-price-value { color: #1b4268; /* Цвет текста */ font-size: 3rem; /* Размер текста */ font-weight: bold; /* Жирное начертание */ } .card-plan, .card-offer-button { background-color: #f60; /* Цвет фона */ color: #fff; /* Цвет текста */ } .card-offer-list { margin: 0; /* Обнуляем */ padding: 1rem 0; /* Расстояние сверху и снизу */ list-style: none; /* Убираем маркеры */ } .card-offer-list > li { padding-bottom: 0.5rem; /* Расстояние снизу */ } .card-offer-button { padding: 0.5rem 2rem; /* Расстояние от текста до края */ text-transform: uppercase; /* Большие буквы */ border: 0; /* Убираем рамку */ border-radius: 30px; /* Радиус скругления */ } </style> </head> <body> <div class="card"> <div class="card-price"> <div class="card-price-value">560 ₽</div> <div class="card-price-month">В месяц</div> </div> <div class="card-plan">Бизнес</div> <div class="card-offer"> <ul class="card-offer-list"> <li>15 Проектов</li> <li>40 ГБ Диск</li> <li>Неограниченный трафик</li> <li>AI Конструктор</li> <li>Антивирус</li> </ul> <div><button class="card-offer-button">Попробовать</button></div> </div> </div> </body> </html>

Результат данного примера показан на рис. 4.

Рис. 4. Карточка

Если требуется разместить несколько таких карточек по горизонтали, то превращаем карточки в строчно-блочные элементы через свойство display.

.card {
  display: inline-block; /* Строчно-блочный элемент */
}

Они отличаются от строчных элементов тем, что для них работает свойство margin, позволяющее добавлять промежутки между карточками.

В примере 2 показано создание двух карточек, расположенных по горизонтали. Оформление карточек для разнообразия слегка изменено.

Пример 2. Вёрстка карточек

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Карточка</title> <style> body { font-family: Arial, Helvetica, sans-serif; /* Шрифт */ } .card { display: inline-block; /* Строчно-блочный элемент */ margin-right: 1rem; /* Расстояние справа */ width: 250px; /* Ширина карточки */ background: #edf6ff; /* Цвет фона */ color: #939faa; /* Цвет текста */ text-align: center; /* Выравнивание по центру */ } .card-price, .card-plan, .card-offer, .card-offer-button { padding: 1rem; /* Пространство вокруг текста */ } .card-price-value { color: #1b4268; /* Цвет текста */ font-size: 3rem; /* Размер текста */ font-weight: bold; /* Жирное начертание */ } .card-plan { background-color: #1b4268; /* Цвет фона */ color: #fff; /* Цвет текста */ } .card-offer-list { margin: 0; /* Обнуляем */ padding: 1rem 0; /* Расстояние сверху и снизу */ list-style: none; /* Убираем маркеры */ } .card-offer-list > li { padding-bottom: 0.5rem; /* Расстояние снизу */ } .card-offer-button { padding: 0.5rem 2rem; /* Расстояние от текста до края */ text-transform: uppercase; /* Большие буквы */ border: 1px solid #d4dde5; /* Параметры рамки */ background-color: #fff; /* Цвет фона */ border-radius: 30px; /* Радиус скругления */ } </style> </head> <body> <div class="card"> <div class="card-price"> <div class="card-price-value">440 ₽</div> <div class="card-price-month">В месяц</div> </div> <div class="card-plan">Стандарт</div> <div class="card-offer"> <ul class="card-offer-list"> <li>10 Проектов</li> <li>30 ГБ Диск</li> <li>Неограниченный трафик</li> <li>AI Конструктор</li> <li>Антивирус</li> </ul> <div><button class="card-offer-button">Попробовать</button></div> </div> </div> <div class="card"> <div class="card-price"> <div class="card-price-value">560 ₽</div> <div class="card-price-month">В месяц</div> </div> <div class="card-plan">Бизнес</div> <div class="card-offer"> <ul class="card-offer-list"> <li>15 Проектов</li> <li>40 ГБ Диск</li> <li>Неограниченный трафик</li> <li>AI Конструктор</li> <li>Антивирус</li> </ul> <div><button class="card-offer-button">Попробовать</button></div> </div> </div> </body> </html>

Результат данного примера показан на рис. 5.

Рис. 5. Две карточки

Схожим образом компонуются и строчные элементы. В качестве примера рассмотрим блок со списком меток (рис. 6).

Рис. 6. Блок с метками

Здесь используется три блочных элемента — заголовок, список с метками и область с кнопкой.

<div class="tags">
  <h2 class="tags__title">Метки</h2>
  <ul class="tags__content">…</ul>
  <div class="tags__buttons">…</div>
</div>

Для создания меток можно использовать разные элементы:

  • <span>;
  • <div>, задав им inline-block;
  • <li>, задав им inline-block и сделав сброс стилей.

Списки часто применяются для всяческих перечислений, даже если на привычный список это не очень похоже. Так что и для меток воспользуемся элементом <ul>, убрав через свойство list-style исходные маркеры, и разместив пункты списка горизонтально (пример 3).

Пример 3. Вёрстка меток

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Метки</title> <style> body { background-color: #2b2f37; /* Цвет фона */ font-family: Arial, Helvetica, sans-serif; /* Шрифт */ } .tags { background-color: #1c2025; /* Цвет фона */ color: #fff; /* Цвет текста */ padding: 1rem; /* Расстояние от текста до края */ border-radius: 10px; /* Радиус скругления */ } .tags__title { font-size: 1.3rem; /* Размер шрифта */ font-weight: normal; /* Нормальное начертание */ margin-top: 0; /* Обнуляем расстояние сверху */ } .tags__content { border: 1px solid #4c5361; /* Параметры рамки */ border-radius: 10px; /* Радиус скругления */ padding: 0.5rem; /* Расстояние от текста до края */ margin-bottom: 1rem; /* Расстояние снизу */ list-style: none; /* Убираем маркеры */ } .tags__content > li { display: inline-block; /* Строчно-блочный элемент */ margin: 0.5rem; /* Внешний отступ */ } .tags__content a { background-color: #1e3959; /* Цвет фона */ color: rgb(255 255 255 / 40%); /* Цвет текста */ text-decoration: none; /* Убираем подчёркивание */ border-radius: 5px; /* Радиус скругления */ white-space: nowrap; /* Запрещаем переносы текста */ padding: 0.3rem 1rem; /* Внутренний отступ */ } .tags__content a:hover { background-color: #601717; /* Цвет фона при наведении */ } .tags__buttons { text-align: right; /* Выравниваем по правому краю */ } .tags__button { background-color: #4ea1fe; /* Цвет фона */ color: #fff; /* Цвет текста */ border: 0; /* Убираем рамку */ border-radius: 5px; /* Радиус скругления */ padding: 0.5rem 1rem; /* Расстояние от текста до края */ } </style> </head> <body> <div class="tags"> <h2 class="tags__title">Метки</h2> <ul class="tags__content"> <li><a href="#">Афганская лисица</a></li> <li><a href="#">Корсак</a></li> <li><a href="#">Песец</a></li> <li><a href="#">Песчаная лисица</a></li> <li><a href="#">Рыжая лисица</a></li> <li><a href="#">Тибетская лисица</a></li> <li><a href="#">Фенек</a></li> </ul> <div class="tags__buttons"><button class="tags__button">Добавить</button></div> </div> </body> </html>

Строчно-блочные элементы как и строчные идут по горизонтали друг за другом и при необходимости переносятся на другую строку.

Итоги

  • При поточной вёрстке макет сперва разбивается на блоки, идущие сверху вниз. При необходимости один блок может содержать в себе подблоки.
  • В качестве универсального блочного элемента обычно используется <div>.
  • Если элементы располагаются по горизонтали, то для их компоновки используется универсальный строчный элемент <span> или другой элемент, к которому добавляется display со значением inline-block.
  • Строчно-блочные элементы отличаются от строчных тем, что для них работает свойство margin.
Автор: Влад Мержевич
Последнее изменение: 07.06.2025

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

Рис. 1

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Знаки зодиака</title> </head> <body> <div class="container"> <div class="card"> <div class="card-icon">♈︎︎</div> <div class="card-title">Овен</div> <div class="card-date">21 марта – 19 апреля</div> </div> <div class="card"> <div class="card-icon">♉︎︎</div> <div class="card-title">Телец</div> <div class="card-date">20 апреля – 20 мая</div> </div> <div class="card"> <div class="card-icon">♊︎︎︎</div> <div class="card-title">Близнецы</div> <div class="card-date">21 мая – 20 июня</div> </div> <div class="card"> <div class="card-icon">♋︎︎</div> <div class="card-title">Рак</div> <div class="card-date">21 июня – 22 июля</div> </div> <div class="card"> <div class="card-icon">♌︎︎︎</div> <div class="card-title">Лев</div> <div class="card-date">23 июля – 22 августа</div> </div> <div class="card"> <div class="card-icon">♍︎︎︎</div> <div class="card-title">Дева</div> <div class="card-date">23 августа – 22 сентября</div> </div> <div class="card"> <div class="card-icon">♎︎︎</div> <div class="card-title">Весы</div> <div class="card-date">23 сентября – 22 октября</div> </div> <div class="card"> <div class="card-icon">♏︎︎︎</div> <div class="card-title">Скорпион</div> <div class="card-date">23 октября – 21 ноября</div> </div> <div class="card"> <div class="card-icon">♐︎︎︎</div> <div class="card-title">Стрелец</div> <div class="card-date">22 ноября – 21 декабря</div> </div> <div class="card"> <div class="card-icon">♑︎︎︎</div> <div class="card-title">Козерог</div> <div class="card-date">22 декабря – 19 января</div> </div> <div class="card"> <div class="card-icon">♒︎︎︎</div> <div class="card-title">Водолей</div> <div class="card-date">20 января – 18 февраля</div> </div> <div class="card"> <div class="card-icon">♓︎︎︎</div> <div class="card-title">Рыбы</div> <div class="card-date">19 февраля – 20 марта</div> </div> </div> </body> </html>
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Знаки зодиака</title> <style> .card { display: inline-block; background-color: #1c2746; text-align: center; padding: 1rem; border-radius: 1rem; color: #fff; font-family: Arial, Helvetica, sans-serif; margin-right: 1em; margin-bottom: 1em; } .card-icon { background-color: #253977; color: #c5b08c; font-size: 3rem; display: inline-block; width: 64px; height: 64px; border-radius: 50%; margin-bottom: 1rem; } .card-title { font-size: 1.2rem; margin-bottom: 1rem; } .card-date { color: #c5b08c; font-size: 0.9rem; } </style> </head> <body> <div class="container"> <div class="card"> <div class="card-icon">♈︎︎</div> <div class="card-title">Овен</div> <div class="card-date">21 марта – 19 апреля</div> </div> <div class="card"> <div class="card-icon">♉︎︎</div> <div class="card-title">Телец</div> <div class="card-date">20 апреля – 20 мая</div> </div> <div class="card"> <div class="card-icon">♊︎︎︎</div> <div class="card-title">Близнецы</div> <div class="card-date">21 мая – 20 июня</div> </div> <div class="card"> <div class="card-icon">♋︎︎</div> <div class="card-title">Рак</div> <div class="card-date">21 июня – 22 июля</div> </div> <div class="card"> <div class="card-icon">♌︎︎︎</div> <div class="card-title">Лев</div> <div class="card-date">23 июля – 22 августа</div> </div> <div class="card"> <div class="card-icon">♍︎︎︎</div> <div class="card-title">Дева</div> <div class="card-date">23 августа – 22 сентября</div> </div> <div class="card"> <div class="card-icon">♎︎︎</div> <div class="card-title">Весы</div> <div class="card-date">23 сентября – 22 октября</div> </div> <div class="card"> <div class="card-icon">♏︎︎︎</div> <div class="card-title">Скорпион</div> <div class="card-date">23 октября – 21 ноября</div> </div> <div class="card"> <div class="card-icon">♐︎︎︎</div> <div class="card-title">Стрелец</div> <div class="card-date">22 ноября – 21 декабря</div> </div> <div class="card"> <div class="card-icon">♑︎︎︎</div> <div class="card-title">Козерог</div> <div class="card-date">22 декабря – 19 января</div> </div> <div class="card"> <div class="card-icon">♒︎︎︎</div> <div class="card-title">Водолей</div> <div class="card-date">20 января – 18 февраля</div> </div> <div class="card"> <div class="card-icon">♓︎︎︎</div> <div class="card-title">Рыбы</div> <div class="card-date">19 февраля – 20 марта</div> </div> </div> </body> </html>

Создайте веб-страницу, показанную на рис. 1.

Рис. 1

Файлы
icon-heart.svg (1.34 KB)
icon-liver.svg (634 bytes)
icon-kidney.svg (1.01 KB)
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Карточка</title> <style> body { background-color: #e9f3fd; font-family: Arial, Helvetica, sans-serif; } .card { display: inline-block; width: 200px; background: #fff; padding: 1em; border-radius: 10px; margin-right: 10px; margin-bottom: 10px; } .card-icon { background-color: #2b89d8; width: 30px; padding: 10px; border-radius: 5px; } </style> </head> <body> <div class="card"> <div><img src="image/icon-heart.svg" alt="" class="card-icon"></div> <h2>Кардиология</h2> <p>Раздел медицины, который занимается изучением, диагностикой и лечением заболеваний сердца и сосудов.</p> </div> <div class="card"> <div><img src="image/icon-liver.svg" alt="" class="card-icon"></div> <h2>Гепатология</h2> <p>Раздел медицины, который занимается изучением, диагностикой и лечением заболеваний печени.</p> </div> <div class="card"> <div><img src="image/icon-kidney.svg" alt="" class="card-icon"></div> <h2>Нефрология</h2> <p>Раздел медицины, который занимается изучением, диагностикой и лечением заболеваний почек.</p> </div> </body> </html>

Создайте веб-страницу, показанную на рис. 1.

Рис. 1

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Карточка</title> <style> body { background-color: #f8f4ec; font-family: Arial, Helvetica, sans-serif; } .card { display: inline-block; width: 200px; background: #efeade; padding: 1em; border-radius: 10px; margin-right: 10px; margin-bottom: 10px; } .card-title { font-weight: normal; margin-top: 0; } .card-icon { text-align: right; margin-top: 2rem; } .card-img { background-color: #feb854; width: 30px; padding: 10px; border-radius: 5px; } </style> </head> <body> <div class="card"> <h2 class="card-title">Кардиология</h2> <p>Раздел медицины, который занимается изучением, диагностикой и лечением заболеваний сердца и сосудов.</p> <div class="card-icon"><img src="image/icon-heart.svg" alt="" class="card-img"></div> </div> <div class="card"> <h2 class="card-title">Гепатология</h2> <p>Раздел медицины, который занимается изучением, диагностикой и лечением заболеваний печени.</p> <div class="card-icon"><img src="image/icon-liver.svg" alt="" class="card-img"></div> </div> <div class="card"> <h2 class="card-title">Нефрология</h2> <p>Раздел медицины, который занимается изучением, диагностикой и лечением заболеваний почек.</p> <div class="card-icon"><img src="image/icon-kidney.svg" alt="" class="card-img"></div> </div> </body> </html>

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

Рис. 1

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Хлебные крошки</title> </head> <body> <nav aria-label="Хлебные крошки"> <div class="breadcrumb"> <a href="#" class="breadcrumb-item">Главная</a> <span class="breadcrumb-separator">//</span> <a href="#" class="breadcrumb-item">Инструмент</a> <span class="breadcrumb-separator">//</span> <a href="#" class="breadcrumb-item">Аккумуляторный инструмент</a> <span class="breadcrumb-separator">//</span> <span class="breadcrumb-item is-active" aria-current="page">Перфораторы</span> </div> </nav> </body> </html>
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Хлебные крошки</title> <style> body { background-color: #eaeaea; font-family: Arial, Helvetica, sans-serif; } .breadcrumb { background-color: #fff; padding: 1rem; border-radius: 5px; } a.breadcrumb-item { color: #50a2de; text-decoration: none; } a.breadcrumb-item:visited { color: #865bd4; } a.breadcrumb-item:hover { color: #f05347; text-decoration: underline; } .breadcrumb-separator { color: #848994; padding: 0 1rem; } .breadcrumb-item.is-active { color: #3b4550; } </style> </head> <body> <nav aria-label="Хлебные крошки"> <div class="breadcrumb"> <a href="#" class="breadcrumb-item">Главная</a> <span class="breadcrumb-separator">//</span> <a href="#" class="breadcrumb-item">Инструмент</a> <span class="breadcrumb-separator">//</span> <a href="#" class="breadcrumb-item">Аккумуляторный инструмент</a> <span class="breadcrumb-separator">//</span> <span class="breadcrumb-item is-active" aria-current="page">Перфораторы</span> </div> </nav> </body> </html>