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

При прямом сравнении кажется, что каркасная вёрстка лучше: форма блока удерживает содержимое внутри, она контрастнее на фоне, фотография на белом выглядит лучше. В то время как строчная — разваливается.
Каркасная/блочная вёрстка
Одна из отличительных особенностей такой вёрстки — блоки одинаковой высоты, которые выкладываются рядами или используются в слайдере. Такие карточки используются повсеместно, и мы к ним привыкли.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Даже несмотря на то, что края некоторых карточек получаются рваными — бескаркасные карточки выигрывают. Теория близости помогает человеку соотнести данные по каждой карточке и без явного выделения блока. За счёт полного названия карточки более информативны. Но если хочется, заголовки можно подрезать — и станет чуть лучше.
Резюмируя строчную вёрстку:
Подходит, когда содержимое карточек непредсказуемо.
Карточки более информативные.
Более гибкая настройка. Данные можно наращивать строками.
Используют больше полезной площади за счёт отсутствия воздуха внутри.
Может не подходить для использования на сложных фонах.
Такие решения используют: Grab, Яндекс Маркет, Лавка, Doordash.

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

Выводы
Сегодня используется множество разных вариантов карточек товаров. Выбор конкретной компоновки зависит прежде всего от задачи и доступных данных. Главное — правильно определить, что именно нужно показать человеку, и что можно опустить. Только так можно получить действительно хороший результат.
Отдельно про кнопку «Купить»
Многие глобальные сервисы делают кнопку «Купить» небольшой с иконкой внутри или вовсе убирают её. В рунете же обычно кнопка «Купить» — большая, расположенная снизу с текстом внутри. Думаю, это связано с консерватизмом, и мы придём к более компактным решениям позже. Как обычно ?
Комментарии (9)
CitizenOfDreams
10.06.2025 09:52Мне как покупателю в принципе без разницы, какой подход вы примените и какой формы будет кнопка "положить в корзину". Главное, не забывайте применять здравый смысл.
Например, плашка "СКИДКА!", закрывающая важную деталь на фотографии товара - это плохо.
Описания товара, обрывающиеся на самом нужном месте - это плохо (например, продаются гаечные ключи двадцати разновидностей, и каждый подписан "Ключ гаечный под гайку размером...").
Пульсирующее, мигающее и движущееся фото товара - это тоже плохо.
Wowfirst
10.06.2025 09:52Интересные решения, я даже не задумывался насколько кнопка "купить" влияет на пользовательский опыт. А строчная вёрстка для меня лучше, как будто бы глазу приятнее =)
uiuxaudit
10.06.2025 09:52В карточке может "плавать" только содержимое Названия и Описания. Это решается строгими правилами заполнения и обрезкой "…".
Содержимое карточки всегда предсказуемо — обычно, не больше 10 понятных вариантов заполнения, что не является проблемой для разраба.
Бескаркасные — это карточки, не имеющие границ и когда фон карточки = фону, на котором она лежит. Как бы дизайнеры не извращались, но на длинной портянке каталога такие карточки неизбежно начинают “путаться”, глаз совершает лишние движения, чтобы чётко идентифицировать к чему какая инфа. Такой дизайн только усложняет визуальный выбор.
Бескаркасные неплохо показывают себя на горизонтальных каруселях, т.к. там юзеру нужно отслеживать только горизонтально.
Теперь по этому дизайну:
Первая карточка выглядит неплохо, НО пока кнопка по контрасту чётко выделяется на фоне фотки, в противном случае кнопка потеряется.
Вторая проблема — размер такой кнопки ограничен, чтобы не перекрыть важное на фотке. Для мобил размер критически важен.
Третья проблема — в таком дизайне очень близко находятся 3 области клика (фотка, купить, название), да ещё некоторые перекрывают друг друга (фотка, купить). В такой ситуации легко промахнуться (даже на десктопе), а значит, вы опять заставляете юзера напрягаться с прицеливанием.
Вторая и третья карточки — вы уже поняли, белую кнопку-индикатор количества просто не видно. В общей массе товаров юзер просто не заметит уже купленные товары.
Ну и везде в вашем новом дизайне слишком маленькие отступы между блоками. Очень незначительный контраст между ценой и названием. А перенос Веса на одну строчку с Названием выглядит багом — непредсказуемо скачет по карточке, что усложняет визуальный поиск.
Нейминг товаров — это отдельная песня. Даже крупные и вроде бы умные площадки сдаются перед SEO и пишут для роботов. Это прямое издевательство над юзерами.
А вот если бы обрезались длинные названия, то горе-маркетологи вынуждены были бы давать товарам с первых слов понятные, человеческие названия, а не вот эту никому не нужную фигню.
И конечно же, нельзя вот так вот просто сказать: “Этот дизайн мне нравится, берём его”. Всё сильно зависит от товаров и ЦА. Вполне нормально даже на одной площадке использовать разный дизайн карточек для разных групп товаров, показывая важные для юзеров параметры.
SkSeven Автор
10.06.2025 09:52В карточке может "плавать" только содержимое Названия и Описания. Это решается строгими правилами заполнения и обрезкой "…".
Содержимое карточки всегда предсказуемо — обычно, не больше 10 понятных вариантов заполнения, что не является проблемой для разраба.В карточках может быть большая вариативность: горизонтальные/вертикальные/квадратные пропорции фотографий, цена от 1 до 1 000 000 руб, наличие скидок, короткие и длинные названия, доп. данные и так далее. Все эти изменчивые данные чувствительны при сборке карточек. Отсюда и задача – найти гибкое и универсальное решение. Или несколько для разного применения. Я работаю в агрегаторе ресторанов и люди заполняющие меню очень разносторонние)
Бескаркасные — это карточки, не имеющие границ и когда фон карточки = фону, на котором она лежит. Как бы дизайнеры не извращались, но на длинной портянке каталога такие карточки неизбежно начинают “путаться”, глаз совершает лишние движения, чтобы чётко идентифицировать к чему какая инфа. Такой дизайн только усложняет визуальный выбор.
Теория близости помогает людям соотносить связанные объекты. У вас не возникнет сложностей понять какие данные к чему относятся. Например, листая Авито
Первая карточка выглядит неплохо, НО пока кнопка по контрасту чётко выделяется на фоне фотки, в противном случае кнопка потеряется.
Да, такое может быть. Вопрос частично решается дизайном: тени, цвета, размеры, ободки и все такое. Но, как правило человек видит не одну карточку у которой фотография по цвету совпадает с кнопкой. А несколько разных и понимает, что по общему правилу кнопки находятся там или сям.
Третья проблема — в таком дизайне очень близко находятся 3 области клика (фотка, купить, название), да ещё некоторые перекрывают друг друга (фотка, купить). В такой ситуации легко промахнуться (даже на десктопе), а значит, вы опять заставляете юзера напрягаться с прицеливанием.
Дано не встречал отдельной области клика под открытие фотографии. Как правило используют 2 области: карточка и кнопка. Но может быть всякое)
Нейминг товаров — это отдельная песня. Даже крупные и вроде бы умные площадки сдаются перед SEO и пишут для роботов. Это прямое издевательство над юзерами.
❤️
И конечно же, нельзя вот так вот просто сказать: “Этот дизайн мне нравится, берём его”. Всё сильно зависит от товаров и ЦА. Вполне нормально даже на одной площадке использовать разный дизайн карточек для разных групп товаров, показывая важные для юзеров параметры.
❤️
uiuxaudit
10.06.2025 09:52про Авито:
бескаркасные карточки у них на десктопах.а для мобил они таки сделали бордеры, вот ровно потому, что "путаются" карточки:
SkSeven Автор
10.06.2025 09:52Сомнительное решение. Потому, что при таком контрасте их едва видно. Только нижние границы усиленные тенью)
Приложение
dom1n1k
10.06.2025 09:52Ничего не понял. То, что вы придумали какую-то собственную терминологию - это ещё пол-беды. Хуже то, что эта терминология как будто нарочно очень запутанная.
Чем отличается каркасная от бескаркасной? Из статьи и иллюстраций это не вполне понятно. Просто наличием внешней рамки? Или поведением внешних размеров - фиксированные vs от контента (hug в терминах фигмы)? Или чем-то ещё?
Блочная и строчная - это синонимы терминов выше? Если да, то зачем они тогда нужны? Если нет, то в чём отличия? И особенно плоха очевидная (но, видимо, ложная) ассоциация с css-терминами block/inline, и это очень сбивает с толку.
hardtop
Отличный разбор. Идея с круглой кнопкой "в корзину" хороша для добавления еды в меню, а вот если это список карточек товаров, где и "в корзину", и "в избранное", и "подробнее" - тут уже такой способ не прокатит - придётся разносить (хотя это и так понятно)