Проектируем сортировку листинга в приложении

Сортировка листинга — одна из важных функций в e-com приложениях. Наряду с фильтрами она позволяет упростить поиск нужных нам товаров. Со стороны эта функция кажется простой. Но после просмотра пары сотен приложений понимаешь, что есть много нюансов, которые стоит учитывать. О них — в этой статье
Станислав Хрусталёв
Станислав Хрусталёв
Автор Hard Client. Пишу об управлении клиентским опытом. Собираю лучшие CX-практики. Оцениваю сервисные модели компаний

Структура статьи

Чтобы облегчить восприятие, статью я разбил на смысловые блоки в соответствии с этапами клиентского пути и функциональными элементами:

Размещение кнопки сортировки

16 гайдлайнов

В верхней правой части

Чаще всего кнопку сортировки можно встретить в верхней правой части экрана с листингом, рядом с фильтрами. Но здесь до неё относительно сложно дотянуться.

Пример Lamoda

В верхней левой части

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

Пример ВкусВилл

В верхней центральной части

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

Пример Sokolov

В нижней части экрана

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

Пример Сбермаркет

Рядом с фильтрами

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

Пример Самокат

Фиксация при прокрутке

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

Пример ✅ Wildberries

Скрытие сразу при прокрутке

Более элегантная механика — прятать кнопки сразу же при скролле вниз, но отображать при попытке скролла вверх. И доступность их схожая, и площадь листинга расширяется.

Пример Lamoda

Скрытие при определенной прокрутке

Вариация предыдущей механики — скрывать кнопки по мере прокрутки, спустя Х пикселей. Смотрится также неплохо.

Пример М.Видео

Анимация движения при скрытии

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

Пример Магнит

Анимация выцветания при скрытии

Иногда можно встретить кейсы, когда кнопки сортировки и фильтров выцветают, чтобы освободить место под карточки листинга. Встречается эта механика реже, но тоже неплохая.

Пример Азбука Вкуса

Анимация движения и выцветания при скрытии

Некоторые совмещают эти механики и дополняют анимацию движения при скрытии панели выцветанием, делая её более утончённой.

Пример Shop

Скорость анимации фиксирована

Часто можно встретить пропадание и появление панели с фиксированной скоростью анимации.

Пример М.Видео

Скорость анимации зависит от скролла

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

Пример Lamoda

Сортировка спрятана в фильтры?

Иногда функцию сортировки прячут за кнопку фильтров, делая её недоступной по умолчанию. Это может ввести в заблуждение, что сортировки нет в принципе.

Пример METRO

Сортировка видна на первом экране фильтров

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

Пример Юла

Highlight комбинации в кнопке

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

Пример Onliner

Внешний вид кнопки

15 гайдлайнов

Содержит иконку

Чтобы облегчить восприятие, в кнопку сортировки имеет смысл добавить иконку, которая подчёркивает суть функции.

Пример еАптека

Иконка релевантна

Наиболее часто используемые для сортировки иконки — две разнонаправленные стрелки или отсортированные бары.

Пример Спортмастер

Иконка общепринятая

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

Пример Азбука Вкуса

Иконка сортировки vs. фильтров

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

Пример Zolla

Иконка консистентна

Убедитесь, что иконка в кнопке сортировки консистентна с остальными иконками в рамках интерфейса по стилю, толщине линии, цвету и т.д.

Пример Азбука Вкуса

Иконка визуально вторична

Если в кнопке используется и иконка, и текст, их можно сделать различными по цвету, смещая акцент на текст текущего варианта.

Пример Hoff

Иконка направлена корректно

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

Пример Столплит

Содержит текст текущего варианта

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

Пример Циан

Текст не обрезается

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

Пример Л’Этуаль

Из текста понятна суть функции

Из текста кнопки должно быть понятно, что это именно сортировка, а не фильтры. В примере выбранная опция может быть воспринята двояко.

Пример Ozon

Из текста понятно направление сортировки

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

Пример Впрок

Текст сопровождается стрелкой или шевроном

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

Пример Sokolov

Текст текущего варианта первичен

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

Пример Sello

Текст варианта vs. сортировки

Если в кнопке есть иконка, из которой понятна её функция, в тексте предпочтение лучше отдать текущей сортировке, чем слову «сортировать». Так будет более информативно.

Пример Петрович

Реакция на касание

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

Пример Shop

Сортировка по умолчанию

5 гайдлайнов

Не по увеличению цены

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

Не по рейтингу

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

Не по алфавиту

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

Не просто по популярности

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

Лучше подсветить разнообразие

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

Появление карточки сортировки

10 гайдлайнов

Анимация появления

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

Пример Золотой

Затемнение фона

Фоновый экран при появлении карточки лучше затемнять, тем самым смещая на неё визуальный акцент и внимание пользователя.

Пример Rendez-Vous

Размытие фона?

Иногда встречаются кейсы, когда фоновый экран ещё и размывается. Что думаете по этому поводу? Неплохо или перебор?

Пример Kaspi.kz

Осветление фона?

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

Пример Эконика

Затемнение всего фона

Чего точно делать не стоит — затемнять фоновый экран лишь частично: области, которые не были затемнены, будут размывать фокус внимания.

Пример Kaspi.kz

Затемнение плавное

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

Пример Sello

Анимация синхронная

Анимацию затемнения экрана и появления карточки лучше синхронизировать. Иначе реакция интерфейса на действия пользователя может стать слишком медленной.

Пример Fix Price

Затухание анимации

Анимацию появления карточки и затемнения экрана можно сделать нелинейной, чтобы она как бы затухала ближе к концу (ease-out).

Пример М.Видео

Тактильная обратная связь

Окончание анимации можно сопроводить ненавязчивой краткой вибрацией (haptic feedback), подсвечивая, что карточка как бы ударяется о невидимый уровень.

Пример No One

Блокирование фонового экрана

Чаще всего при выборе сортировки фоновый экран блокируется, но есть те, кто идёт другим путем. Как думаете, зачем оставлять экран активным?

Пример Ozon

Внешний вид карточки

35 гайдлайнов

Формат UIAlertController?

У ряда игроков карточка сортировки реализована в формате системного UIAlertController и выбивается из дизайна приложения. Неплохо, но не могу сказать, что это – топ.

Пример Lamoda

Формат UIPickerView?

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

Пример Ozon

Формат контекстного меню?

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

Пример Лента

Формат кастомной карточки

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

Пример Самокат

Карточка выделяется на фоне

Карточку сортировки лучше выделить на фоне экрана, чтобы сфокусировать на ней внимание пользователя. В примере она практически сливается с остальными элементами.

Пример Sela

Края карточки скруглены

Дополнительно выделить карточку на фоне интерфейса помогает скругление её краев. Без него карточка, как отдельный элемент, читается тяжелее.

Пример Снежная Королева

Без необходимости прокрутки

Спроектируйте карточку так, чтобы все варианты сортировки были видны одномоментно. Формат UIPickerView в этом как раз подводит.

Пример Ozon

Если прокрутка есть, она очевидна

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

Пример Мегамаркет

Без лишней прокрутки

И наоборот: если контент карточки полностью помещается на экран, добавлять в неё скролл не имеет никакого смысла.

Пример Hoff

Загрузка без задержек

Базовый момент: контент вариантов сортировки в карточке должен загружаться сразу, без каких-либо задержек.

Пример AliExpress

Заголовок добавлен

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

Пример Hoff

Заголовок отталкивается от целевого действия

Лучше если заголовок карточки будет отталкиваться не от существительного, а от действия, которое совершит клиент при выборе варианта.

Пример Shop

Варианты отсортированы

Да, и варианты сортировки также можно сортировать. Хорошей практикой будет вывести наиболее популярные варианты первыми.

Пример Sunlight

Варианты разделены отступами

Добавьте между вариантами достаточные отступы, чтобы они визуально не слипались друг с другом.

Пример Спортмастер

Варианты разделены линиями

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

Пример ЦУМ

Варианты в виде кнопок

Как альтернатива, варианты можно представить в виде отдельных кнопок. Встречается реже, но выглядит неплохо.

Пример Shop

Варианты недвусмысленны

Текст вариантов не должен оставлять у клиента вопросов. Что есть выгода, в примере непонятно: абсолютная это или % скидка, соотношение цена/качество или что-то другое?

Пример Wildberries

Варианты без сокращений

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

Пример Wildberries

Варианты без ошибок

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

Пример КРАВТ

Варианты в едином регистре

Базовый момент: если вы предоставляете клиенту на выбор несколько опций сортировки, позаботьтесь о том, чтобы они были в едином регистре.

Пример Яндекс.Маркет

Заголовок и варианты согласованы

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

Пример AliExpress

Заголовок и варианты выровнены

Общее центрирование или выравнивание по левому краю, а также центрирование заголовка с выравниванием вариантов по левому краю — это ОК. По-другому лучше делать не стоит.

Пример Азбука Вкуса

Направленность сортировки понятна

Из текста варианта должно быть понятно, в какую именно сторону будет направлена сортировка. По популярности — понятно. А вот по стоимости? Уже неочевидно.

Пример Юла

Пояснения добавлены

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

Пример М.Видео

Пояснения понятны

При этом пояснения должны выполнять ключевую функцию: делать варианты более понятными. В примере они лишь порождают новые вопросы.

Пример Sello

Пояснения визуально вторичны

Чтобы не перегрузить интерфейс, пояснения можно сделать в формате подписей к названиям вариантов.

Пример Ситилинк

Текущий вариант выделяется на фоне остальных

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

Пример Sela

Текущий вариант выделен галочкой

Достаточно часто текущий вариант сортировки снабжают интуитивно понятной галочкой.

Пример Циан

Текущий вариант выделен radiobutton’ом

Нередко встречается и выделение текущего варианта сортировки с помощью radiobutton’а.

Пример Яндекс.Еда

Текущий вариант выделен не чекбоксом

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

Пример Четыре Лапы

Текущий вариант выделен заливкой

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

Пример Shop

Текущий вариант выделен жирным

Кроме того, нередко можно встретить и выделение текущего варианта с помощью более жирного по отношению к остальным начертания шрифта.

Пример Спортмастер

Текущий вариант выделен качественно

Какие бы элементы вы ни использовали, чтобы привлечь внимание клиента к текущему варианту, позаботьтесь о том, чтобы они были в нормальном разрешении и не пикселили.

Пример М.Видео

Текущий вариант выделен заметно

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

Пример Stockmann

Текущий вариант активен

Если текущий вариант сделать неактивным, это может вызвать вопросы («так это текущий вариант или я по какой-то причине просто не могу его выбрать?»).

Пример Lamoda

Типы сортировки

11 гайдлайнов

По популярности

Наиболее часто встречаемая сортировка — по популярности (кстати, что именно стоит за словом «популярность» — заказы / просмотры / что-то прочее — также важно пояснять).

Пример Сбермаркет

По возрастанию цены

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

Пример FixPrice

По убыванию цены

Обратный вариант: когда интересны более дорогие товары в категории. Относится не только к люксу, но и, например, к сфере подарков («какой у вас самый дорогой букет?»).

Пример ЦУМ

По цене за единицу

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

Пример Циан

По размеру скидки

Если выгода — важный фактор для ваших клиентов, а скидки — один из основных методов привлечения внимания, размер скидки можно вынести в качестве варианта сортировки.

Пример Детский мир

По рейтингу

Всё чаще и чаще мы обращаем внимание на социальное доказательство: что думают о товаре те, кто его купил. Поэтому сортировка по рейтингу не будет лишней.

Пример Мегамаркет

По количеству отзывов

Однако оценка может ввести в заблуждение, если она основана лишь на паре-тройке отзывов. Поэтому сортировка по количеству отзывов также может быть полезна.

Пример Яндекс.Маркет

По новизне

Если ваш ассортимент обновляется, имеет смысл добавить тип сортировки по новизне, чтобы клиент мог сначала ознакомиться с новинками.

Пример Рив Гош

По алфавиту?

Мое мнение таково, что если клиент хочет найти товар по названию, ему нужен поиск, а не сортировка. А как считаете вы? Напишите в комментариях.

Пример Петрович

По специфическим параметрам

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

Пример Auto.ru

Рекомендуемые товары

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

Пример ЦУМ

Направленность сортировки обоснована

Не стоит забывать, что типы сортировки должны иметь смысл. Трудно представить, что кто-то будет искать самые залежавшиеся товары или товары с низкой скидкой.

Пример Снежная Королева

Активация сортировки

10 гайдлайнов

Активная область ячейки

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

Пример Эконика

Реакция на касание

Активация сортировки начинается с касания варианта пальцем. И будет круто, если он визуально отреагирует на это касание, делая интерфейс чуть более отзывчивым.

Пример No One

Активация в одно касание

Реализуйте возможность активации сортировки в одно касание: не заставляйте пользователя совершать дополнительные действия.

Пример Комус

Реакция моментальна

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

Пример Befree

Индикация ожидания

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

Пример М.Видео

Возврат к нулевому уровню скролла

При активации новой сортировки нет смысла оставлять клиента посреди уже прокрученного листинга товаров. Возвращайте его в начало.

Пример Ozon

Без обновления при тапе по активному варианту

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

Пример Ситилинк

Обновление кнопки сортировки

Как текст, так и иконка (если предполагается смена направленности) в рамках кнопки сортировки при её активации должны обновляться.

Пример Яндекс.Маркет

Highlight выбранной сортировки

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

Пример Детский мир

Тактильная обратная связь

Чтобы дополнительно подкрепить активацию сортировки, это действие можно снабдить ненавязчивой и кратковременной вибрацией.

Пример Leroy Merlin

Закрытие карточки

13 гайдлайнов

При выборе варианта сортировки

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

Пример Дикси

При тапе по кнопке отмены

Хорошей практикой будет добавить в карточку кнопку отмены, чтобы в явной форме подсветить возможность прервать выполнение действия.

Пример Lamoda

Кнопка отмены не первична

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

Пример Магнит

Кнопка отмены удобно расположена

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

Пример Майшоп

Кнопка отмены — крестиком

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

Пример Дром Авто

При тапе по фону

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

Пример Все Инструменты

При смахивании вниз

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

Пример Joom

Highlight возможности смахивания

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

Пример Детский мир

Жест vs. движение карточки

При смахивании вниз лучше сделать карточку отзывчивой на 100%: на сколько пикселей клиент провел пальцем вниз, на столько же пикселей должна опуститься и карточка.

Пример Спортмастер

Синхронизация анимации

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

Пример Kari

От скролла к закрытию

Если карточка предполагает прокрутку контента, при скролле вверх и достижении нулевой позиции можно сразу переходить к смахиванию всей карточки.

Пример Poison Drop

Анимация закрытия при тапе

Базовый момент: лучше, если карточка будет как появляться, так и скрываться с помощью плавной, но быстрой анимации.

Пример Рив Гош

Анимация закрытия после свайпа

После свайпа карточка, которая уже прошла определённый путь вниз, не должна исчезать прерывисто. Свайп должен плавно сменяться анимацией закрытия.

Пример Спортмастер

To be continued…

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

Свои новые материалы я анонсирую в Телеграм-канале. Подписывайтесь, если не хотите их пропускать. На связи.

Поделиться
Отправить
Запинить

Обсуждение