Неработающие кнопки
Кнопки, которые активны в любой ситуации, давно уже вошли в число «лучших практик” UX-дизайна, однако до сих пор в интерфейсах встречаются и неактивные кнопки. В 2021 году коллеги из «Открытия» попросили меня подготовить презентацию с теоретическим обоснованием концепции "кнопки должны быть всегда активны”. Удобно иметь под рукой аргумент, чтобы предъявить менеджеру продукта. Теперь я оформил презентацию в виде статьи и надеюсь, что она будет полезна как продуктовым дизайнерам, так и менеджерам.
Предназначение кнопок
Кнопка нужна для совершения некоторого действия. Если кнопка находится в нерабочем состоянии, то совершить действие невозможно. Блокировать действие уместно тогда, когда недостаточно условий (или данных) для совершения этого действия.
Недостаточно данных
Программа может ожидать данные как от пользователя, так и от собственных компонентов (сервера, локального хранилища, результатов локальных вычислений).
Пользователь может не предоставить данные:
- на текущем экране
- на прошлом шаге
- на сторонних сервисах (например, не подтвердить адрес электронной почты)
Компоненты программы могут не предоставить данные:
- из-за ошибки соединения (медленный интернет)
- из-за долгих вычислений (типа генерации ключей)
- из-за внутренней ошибки программы
Таким образом, существует по меньшей мере 6 возможных объяснений, почему действие заблокировано.
Пользователь ничего не знает о внутреннем устройстве программы и не может достоверно определить причину, по которой кнопка неактивна. Реакция пользователя сводится к вариантам "я что-то сделал не так" или "программа не даёт мне сделать что я хочу”. Оба варианта вызывают негативные эмоции.
Единственный для пользователя вариант избежать негативных эмоций – не заметить неактивную кнопку вовсе. Именно такой паттерн и применяют дизайнеры: делают неактивные элементы по возможности незаметными.
Но это не сильно помогает. Давайте посмотрим на такую компоновку и сравним варианты:
Активная кнопка:
- ✅ Хорошо заметна
- ✅ Находится в удобном для нажатия месте
- ✅ Нажимается
- ❌ Преждевременное нажатие приводит к ошибке
Неактивная кнопка:
- ❌ Плохо заметна
- ❌ Находится в удобном для нажатия месте (зря его занимает)
- ❌ Не нажимается
- ❌ Преждевременное нажатие ни к чему не приводит
Неактивная кнопка не может порадовать пользователя ничем хорошим. Она нужна только дизайнеру, чтобы заранее зарезервировать место для активной кнопки. Дизайнер-то себе работу облегчил, дизайнер молодец. А вот о пользователе не подумал.
Включаем кнопки!
Пусть кнопка будет всегда активна. Пользователь в любое время может попытаться совершить действие. Если попытка отклонена, интерфейс сообщит о причине – укажет на недостающие данные (например, выделит красным цветом). Пользователю не придётся гадать, что именно он (или программа) делает не так.
Прячем кнопку под скроллинг
Хорошо, если удастся спрятать кнопку в самый низ, под скроллинг – никто не увидит активна она или нет. А когда пользователь заполнит все данные и долистает донизу, тогда и увидит активную кнопку. Соблюдается принцип своевременности, всё классно. Давайте сравним варианты.
Кнопка на виду:
- ✅ Хорошо заметна
- ✅ Находится в удобном для нажатия месте
- ❌ Отнимает пространство
- ❌ Преждевременное нажатие приводит к ошибке
Кнопка скрыта под скроллингом:
- ❌ Незаметна, если не пролистать экран
- ✅ Находится в удобном для нажатия месте (после ввода всех данных)
- ✅ Не отнимает пространство
- ✅ Преждевременное нажатие маловероятно
Действительно, за второй вариант набирается больше аргументов. Значит, лучше прятать кнопку под скроллингом. Но в реальности пользователи не ведут себя идеально. Некоторые пролистывают страницу вниз, не заполнив данные. Если такой пользователь увидит неактивную кнопку, перед ним встанет вопрос: почему кнопка не работает. Как мы определили выше, ответов может быть как минимум 6. Это перебор. Так что даже спрятанная внизу кнопка должна быть активной.
Правила расположения кнопки
С тем, что кнопка должна быть всегда активна, мы разобрались. Теперь определим правила расположения этой самой активной кнопки. Аргумент “кнопка отнимает пространство” перестаёт работать на страницах, где мало контента. Поэтому баланс преимуществ и недостатков изменяется в зависимости от содержимого страницы. Стремясь к перевесу преимуществ над недостатками, мы придём к двум разным правилам: мало контента – кнопка видна, много контента – кнопка скрыта под скроллингом.
Мало контента:
- ✅ Кнопка хорошо заметна
- ✅ Находится в удобном для нажатия месте
- ✅ Не отнимает пространство
- ❌ Преждевременное нажатие приводит к ошибке
Много контента:
- ❌ Кнопка незаметна, если не пролистать экран
- ✅ Находится в удобном для нажатия месте (после ввода всех данных)
- ✅ Не отнимает пространство
- ✅ Преждевременное нажатие маловероятно
Мне, как дизайнеру, проще сделать одну универсальную компоновку: привязать кнопку к нижнему краю экрана и всегда показывать её поверх контента (такой вариант я показывал выше). И программисту проще сделать одну компоновку. Дизайнер с программистом невольно путают простоту интерфейса и простоту создания интерфейса, от чего выдумывают, будто их простое решение упростит жизнь также и пользователю. Но аргументы за универсальную компоновку легко опровергнуть. Пользователю удобно всегда нажимать в одно и то же место? Нет, пользователь нажимает во множество разных мест на экране, ему всё равно. Пользователь хочет видеть главную кнопку в одном и том же месте? А он и увидит в том же месте, когда пролистает страницу до конца. И так далее.
В итоге, всё говорит в пользу адаптивного правила: мало контента – кнопка видна, много контента – кнопка скрыта под скроллингом.
Отключаем кнопки!
Иногда неактивная кнопка всё же нужна. Если кнопка вызывает необратимое деструктивное действие, полезно предотвратить её случайное или необдуманное нажатие. Мы не стремимся облегчить действие, о котором пользователь, вероятно, пожалеет. Прежде чем выстрелить себе в ногу, пользователь должен потрудиться снять пистолет с предохранителя.
В начале статьи я писал про “лучшие практики”. У меня есть отдельная статья «Нет никаких UX-трендов», и я собираюсь написать ещё одну статью, где критически рассмотрю “лучшие практики”. Изучая тренды, я пришёл к выводу, что существует только один тренд – технический прогресс. UX-дизайнер лишь использует новые технологии, чтобы приблизить опыт использования цифровых продуктов к реальному опыту, к заложенному природой механизму восприятия человека. То же с лучшими практиками – они хороши лишь тем, что приближают цифровой опыт к реальному. Приближение к реальности – и есть единственная лучшая практика. В случае с кнопками напрашивается простая аналогия из окружающего мира: если что-то не работает, значит оно сломано. Если сущность не реагирует на касание, значит она умерла.
Заключение
Итак, по итогам вышесказанного следует придерживаться следующих правил:
- Кнопка всегда активна
- Если при нажатии на кнопку не выполнены условия для совершения действия, интерфейс указывает на них
- Мало контента – кнопка видна
- Много контента – кнопка не перекрывает контент, а убрана под скроллинг
- Деструктивное необратимое действие – кнопка неактивна, нужно снять с предохранителя
Если хотите посмотреть больше реальных кейсов продуктового дизайна – заходите ко мне на manwe.ru
проблема неработающих кнопок -частое явление , кто-то либо адаптируется и не решает этот вопрос , хотя как правило если кнопка есть , нужно ее починить
Здраво мыслите. Тема наболевшая, т.к. насколько слышал я, от неактивных состояний кнопок чаще отказываются в разработке.
Прекрасный анализ и аргументы. Желательно все тестировать на реальных людях в реальной среде, помимо своих рассуждений и в контексте конкретных экранов и сценариев.
5 копеек: Если кнопка неактивна, она серая и визуально близка к виду полей ввода, и это не очень как по мне, и является плюс аргументов в сторону решения выноса за скролл.
Неактивная кнопка
"Плохо заметна" - так сделайте ее хорошо заметной, подберите более темный серый. Главное оставить ее в чб, чтобы она отличалась от активной цветной кнопки, в вашем случае.
"Находится в удобном для нажатия месте (зря его занимает)" - можно поместить в скролл, именно потому что кнопка - завершающий этап сценария, она не требуется пользователю, чтобы заполнить поля ввода.
"Не нажимается" - она может нажиматься, только результатом будет не переход на след. экран, а подсвечивание невыполненных действий.
"Преждевременное нажатие ни к чему не приводит" - см. выше.
Вы предлагаете пользователю изучать интерфейс не сверху вниз, а гоняете его туда-сюда - сначала сверху вниз, потому что залитая цветом кнопка является акцентом 1, затем снизу вверх, к первому полю ввода данных, и снова сверху вниз, для заполнения всех полей.
Если неактивная кнопка может нажиматься, то это уже активная кнопка :)
Кажется, Вы написали комментарий, не дочитав статью до конца.
Никогда кстати не задумывался, почему кнопки бывают неактивными
Изучая тренды, я пришёл к выводу, что существует только один тренд – технический прогресс.👍