На примере карточек блюд разбираемся, какой подход выбрать: блочный или строчный, как работать с данными, куда деть кнопку и т. д. Соберём минусы и плюсы каждого подхода.

Виды карточек

Есть несколько основных приёмов для оформления карточек. Каркасные — когда карточка представлена в виде самостоятельного блока с чёткими контурами. Бескаркасные — когда форма карточки не выражена явно, а формируется за счёт содержимого. Ещё карточки могут быть горизонтальными и вертикальными. Мы разберём вертикальные, так как они применяются чаще в клиентских продуктах.

Предположим, нам нужно сверстать карточки блюд для меню ресторана. Стандартный набор данных такой: фотография, название, описание, цена, кнопка покупки и кнопки количества. Опционально может быть скидка, вес, калорийность, лайк и доп. отметки.

Каркасная и бескаркасная вёрстка
Каркасная и бескаркасная вёрстка

При прямом сравнении кажется, что каркасная вёрстка лучше: форма блока удерживает содержимое внутри, она контрастнее на фоне, фотография на белом выглядит лучше. В то время как строчная — разваливается.

Каркасная/блочная вёрстка

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

Карточки выглядят хорошо
Карточки выглядят хорошо

Но что, если содержимое карточек не всегда предсказуемо? Например, название может быть в одну или три строки. Описание может быть длинным, коротким или вовсе отсутствовать. У каких-то блюд есть вес и калорийность, а у каких-то нет. Хоть форма и удерживает содержимое карточки, но появляются большие дыры, так как блочная вёрстка предполагает общую высоту карточек в ряде.

Карточки выглядят плохо. Особенно последняя
Карточки выглядят плохо. Особенно последняя

Чтобы победить эту проблему, часто устанавливают ограничение на длину заголовков и описания. Всё, что выходит за ограничение, скрывается за троеточием. Также часто цену и кнопку объединяют вместе.

Уже лучше
Уже лучше

Такой подход решает проблему частично:

  • Сокращаются разрывы между контентом и кнопкой.

  • Важная часть заголовков может скрываться. Например, если две одинаковые пиццы, но разного размера.

  • Сложно выделить скидку и показать две цены.

  • Описание перестаёт быть полезным, так как не даёт полной картины о блюде. Например, если я не люблю лук.

  • Если добавить блюдо в корзину, то появляются кнопки изменения количества, и цена скрывается.

Цена со скидкой. Кнопки количества закрывают цену
Цена со скидкой. Кнопки количества закрывают цену

Уберём краткое описание совсем, так как оно не помогает. Вынесем обратно цену из кнопки, а саму кнопку сделаем меньше. Вес блюда перенесём к цене, так как цена и вес блюда связаны. А вот калорийность, хоть и важна для определённой части людей, не заслуживает отдельной строки.

Неплохо
Неплохо

В общем, неплохо. Проверим на прочность и добавим доп. состояния: покажем скидку, покажем кнопки изменения количества, добавим доп. отметку блюда

Скидка. Кнопки и индикатор количества
Скидка. Кнопки и индикатор количества

Если посмотреть на карточку со скидкой и кнопками количества, видно, что они не уместятся на одном уровне. На самом деле это не проблема: кнопки количества появляются после добавления в корзину на 1–2 секунды поверх цены, а затем переходят в индикатор количества.

Посмотрим в минимальном размере на телефоне.

Карточки в минимальном размере
Карточки в минимальном размере

По стилистике карточки можно подтянуть и смягчить контраст. Но в целом конфигурация получается компромиссной. Всё из-за того, что каркасные карточки требуют выравнивания блоков по высоте в одном ряду. А элементы внутри карточки следует располагать по правилу «якорей». Всё это делает компоновку не самой гибкой. То и дело во что-то упираешься.

Если резюмировать, то каркасная вёрстка:

  • Подходит, когда содержимое карточек предсказуемо.

  • Хорошо подходит для использования на сложных фонах.

  • Конфигурация карточек не гибкая.

  • Использует меньше полезной площади за счёт внутреннего воздуха и внешних отступов между друг другом.

Подобные решения используют: Бургер Кинг, Перекрёсток, Биг Гик.

Бургер Кинг, Перекрёсток, Биг Гик
Бургер Кинг, Перекрёсток, Биг Гик

Бескаркасная/строчная вёрстка

При такой вёрстке очертания блока карточки создаются за счёт её содержимого.

Если расположить карточки в несколько рядов — сразу всё становится ещё хуже. Карточки не только разваливаются, но и появляются незапланированные связи между кнопкой верхней карточки и фотографией нижней карточки.

Карточки в 2 ряда
Карточки в 2 ряда

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

Карточки разной высоты ломают ритм
Карточки разной высоты ломают ритм

При таком подходе следует подойти с другой стороны. Так как вёрстка карточки идёт потоком сверху вниз, следует классифицировать данные сперва по их объёму. Например: фотографии одного размера, цена примерно одной длины, кнопка добавления одинаковая. А вот название и описание могут быть разными. Вес и калорийность могут быть, а могут отсутствовать.

Переместим цену вверх. Сразу становится видно — более последовательное начало карточки.

Цена задает спокойный ритм
Цена задает спокойный ритм

Кнопка всё ещё задаёт вертикальный ритм и сбивает его. Сделаем её меньше и перенесём ближе к цене. Так как цена короткая по длине, она освобождает правую сторону.

Хоть низ ряда и рваный – это выглядит естесственно
Хоть низ ряда и рваный – это выглядит естесственно

После переноса кнопки ритм стал сильно лучше. Я намеренно поднял кнопку на границу фотографии. Из-за того, что фотографии могут быть разные: белые, чёрные, цветные — кнопка будет лучше считываться.

Даже несмотря на значительную разницу в длине заголовка и описания — карточки выглядят естественно, и глаз не спотыкается. Как и в прошлых карточках — сокращать описание нет смысла, поэтому уберём его. Название пока оставим полным.

Уберём калорийность, а вес добавим к названию блюда.

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

Скидка. Кнопки и индикатор количества
Скидка. Кнопки и индикатор количества

Посмотрим в минимальном размере на телефоне.

Карточки в минимальном размере
Карточки в минимальном размере

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

Резюмируя строчную вёрстку:

  • Подходит, когда содержимое карточек непредсказуемо.

  • Карточки более информативные.

  • Более гибкая настройка. Данные можно наращивать строками.

  • Используют больше полезной площади за счёт отсутствия воздуха внутри.

  • Может не подходить для использования на сложных фонах.

Такие решения используют: Grab, Яндекс Маркет, Лавка, Doordash.

Grab, Яндекс Маркет, Doordash.
Grab, Яндекс Маркет, Doordash.

Универсальное решение

Универсальное решение заключается в том, чтобы найти общий подход использования карточек: в плитке, в слайдере, выделенные и т. д. Для этого нужно в первую очередь отталкиваться от данных, а уже потом искать приёмы для их компоновки.

Например, последние карточки можно сделать каркасными, если нужно их вписать в отдельный самостоятельный слайдер. Или выделить одну в плитке.

При одинаковой конфигурации карточки выглядят хорошо
При одинаковой конфигурации карточки выглядят хорошо

Выводы

Сегодня используется множество разных вариантов карточек товаров. Выбор конкретной компоновки зависит прежде всего от задачи и доступных данных. Главное — правильно определить, что именно нужно показать человеку, и что можно опустить. Только так можно получить действительно хороший результат.

Отдельно про кнопку «Купить»

Многие глобальные сервисы делают кнопку «Купить» небольшой с иконкой внутри или вовсе убирают её. В рунете же обычно кнопка «Купить» — большая, расположенная снизу с текстом внутри. Думаю, это связано с консерватизмом, и мы придём к более компактным решениям позже. Как обычно ?

Комментарии (2)


  1. hardtop
    10.06.2025 09:52

    Отличный разбор. Идея с круглой кнопкой "в корзину" хороша для добавления еды в меню, а вот если это список карточек товаров, где и "в корзину", и "в избранное", и "подробнее" - тут уже такой способ не прокатит - придётся разносить (хотя это и так понятно)


  1. CitizenOfDreams
    10.06.2025 09:52

    Мне как покупателю в принципе без разницы, какой подход вы примените и какой формы будет кнопка "положить в корзину". Главное, не забывайте применять здравый смысл.

    Например, плашка "СКИДКА!", закрывающая важную деталь на фотографии товара - это плохо.

    Описания товара, обрывающиеся на самом нужном месте - это плохо (например, продаются гаечные ключи двадцати разновидностей, и каждый подписан "Ключ гаечный под гайку размером...").

    Пульсирующее, мигающее и движущееся фото товара - это тоже плохо.