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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

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

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


  1. hardtop
    10.06.2025 09:52

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


  1. CitizenOfDreams
    10.06.2025 09:52

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

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

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

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


  1. Wowfirst
    10.06.2025 09:52

    Интересные решения, я даже не задумывался насколько кнопка "купить" влияет на пользовательский опыт. А строчная вёрстка для меня лучше, как будто бы глазу приятнее =)


  1. uiuxaudit
    10.06.2025 09:52

    В карточке может "плавать" только содержимое Названия и Описания. Это решается строгими правилами заполнения и обрезкой "…".

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

    Бескаркасные — это карточки, не имеющие границ и когда фон карточки = фону, на котором она лежит. Как бы дизайнеры не извращались, но на длинной портянке каталога такие карточки неизбежно начинают “путаться”, глаз совершает лишние движения, чтобы чётко идентифицировать к чему какая инфа. Такой дизайн только усложняет визуальный выбор.

    Бескаркасные неплохо показывают себя на горизонтальных каруселях, т.к. там юзеру нужно отслеживать только горизонтально.

    Теперь по этому дизайну:

    Первая карточка выглядит неплохо, НО пока кнопка по контрасту чётко выделяется на фоне фотки, в противном случае кнопка потеряется.

    Вторая проблема — размер такой кнопки ограничен, чтобы не перекрыть важное на фотке. Для мобил размер критически важен.

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

    Вторая и третья карточки — вы уже поняли, белую кнопку-индикатор количества просто не видно. В общей массе товаров юзер просто не заметит уже купленные товары.

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

    Нейминг товаров — это отдельная песня. Даже крупные и вроде бы умные площадки сдаются перед SEO и пишут для роботов. Это прямое издевательство над юзерами. 

    А вот если бы обрезались длинные названия, то горе-маркетологи вынуждены были бы давать товарам с первых слов понятные, человеческие названия, а не вот эту никому не нужную фигню.

    И конечно же, нельзя вот так вот просто сказать: “Этот дизайн мне нравится, берём его”. Всё сильно зависит от товаров и ЦА. Вполне нормально даже на одной площадке использовать разный дизайн карточек для разных групп товаров, показывая важные для юзеров параметры.


    1. SkSeven Автор
      10.06.2025 09:52

      В карточке может "плавать" только содержимое Названия и Описания. Это решается строгими правилами заполнения и обрезкой "…".

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

      В карточках может быть большая вариативность: горизонтальные/вертикальные/квадратные пропорции фотографий, цена от 1 до 1 000 000 руб, наличие скидок, короткие и длинные названия, доп. данные и так далее. Все эти изменчивые данные чувствительны при сборке карточек. Отсюда и задача – найти гибкое и универсальное решение. Или несколько для разного применения. Я работаю в агрегаторе ресторанов и люди заполняющие меню очень разносторонние)

      Бескаркасные — это карточки, не имеющие границ и когда фон карточки = фону, на котором она лежит. Как бы дизайнеры не извращались, но на длинной портянке каталога такие карточки неизбежно начинают “путаться”, глаз совершает лишние движения, чтобы чётко идентифицировать к чему какая инфа. Такой дизайн только усложняет визуальный выбор.

      Теория близости помогает людям соотносить связанные объекты. У вас не возникнет сложностей понять какие данные к чему относятся. Например, листая Авито

      Первая карточка выглядит неплохо, НО пока кнопка по контрасту чётко выделяется на фоне фотки, в противном случае кнопка потеряется.

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

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

      Дано не встречал отдельной области клика под открытие фотографии. Как правило используют 2 области: карточка и кнопка. Но может быть всякое)

      Нейминг товаров — это отдельная песня. Даже крупные и вроде бы умные площадки сдаются перед SEO и пишут для роботов. Это прямое издевательство над юзерами. 

      ❤️

      И конечно же, нельзя вот так вот просто сказать: “Этот дизайн мне нравится, берём его”. Всё сильно зависит от товаров и ЦА. Вполне нормально даже на одной площадке использовать разный дизайн карточек для разных групп товаров, показывая важные для юзеров параметры.

      ❤️


      1. uiuxaudit
        10.06.2025 09:52

        про Авито:
        бескаркасные карточки у них на десктопах.

        а для мобил они таки сделали бордеры, вот ровно потому, что "путаются" карточки:


        1. SkSeven Автор
          10.06.2025 09:52

          Сомнительное решение. Потому, что при таком контрасте их едва видно. Только нижние границы усиленные тенью)

          Приложение


  1. dom1n1k
    10.06.2025 09:52

    Ничего не понял. То, что вы придумали какую-то собственную терминологию - это ещё пол-беды. Хуже то, что эта терминология как будто нарочно очень запутанная.

    Чем отличается каркасная от бескаркасной? Из статьи и иллюстраций это не вполне понятно. Просто наличием внешней рамки? Или поведением внешних размеров - фиксированные vs от контента (hug в терминах фигмы)? Или чем-то ещё?

    Блочная и строчная - это синонимы терминов выше? Если да, то зачем они тогда нужны? Если нет, то в чём отличия? И особенно плоха очевидная (но, видимо, ложная) ассоциация с css-терминами block/inline, и это очень сбивает с толку.


    1. SkSeven Автор
      10.06.2025 09:52

      Согласен. Блочная/строчная могут путать