Как проектировать формы: лучшие практики UX
Практика3 минРедакция Innovialabs
Коротко
Удобная форма просит только необходимое, подписывает каждое поле видимой меткой над ним, использует правильные типы ввода для мобильной клавиатуры и сообщает об ошибках сразу после заполнения поля, рядом с ним и понятным языком.
Главные правила
Форма — место, где пользователь платит за результат своим временем и данными. Чем меньше усилий она требует, тем чаще её доводят до конца.
- Спрашивайте только необходимое. Каждое поле должно быть нужно для текущего шага.
- Видимая подпись над каждым полем, а не только плейсхолдер.
- Одна колонка и логичный порядок полей.
- Правильные типы ввода, чтобы на телефоне открывалась нужная клавиатура.
- Ошибки — сразу, рядом с полем и с подсказкой, как исправить.
Подписи и плейсхолдеры
Плейсхолдер (серый текст внутри поля) исчезает, как только пользователь начинает печатать. Если он заменяет подпись, человек забывает, что вводит, а при проверке заполненной формы не может понять, какое поле какое. Кроме того, светло-серый текст часто плохо читается.
| Подход | Когда использовать |
|---|---|
| Подпись над полем | Всегда, это основа |
| Плейсхолдер | Только для примера формата: «+998 90 123 45 67» |
| Подсказка под полем | Для требований: «Не менее 8 символов» |
| Плавающая подпись | Допустима, если она остаётся видна после ввода |
Подписи над полем удобнее, чем слева: их проще связать с полем взглядом и они не ломаются на узком экране.
Порядок и группировка полей
- Располагайте поля в одну колонку — так взгляд движется по прямой и ничего не пропускается.
- Порядок — от простого к сложному и от привычного к личному: сначала имя, потом контакты, потом детали.
- Группируйте связанные поля под заголовками: «Контакты», «Адрес доставки», «Оплата».
- Короткие связанные поля (город и индекс, срок действия карты) можно ставить в одну строку.
- Длинную форму разбейте на шаги с индикатором прогресса.
Типы ввода и автозаполнение
Правильный type, inputmode и autocomplete экономят пользователю больше времени, чем любой визуальный приём.
<label for="email">Email</label>
<input id="email" type="email" autocomplete="email">
<label for="phone">Телефон</label>
<input id="phone" type="tel" autocomplete="tel">
<label for="code">Код из SMS</label>
<input id="code" inputmode="numeric" autocomplete="one-time-code">
<label for="name">Имя</label>
<input id="name" type="text" autocomplete="given-name">
type="email"иtype="tel"открывают на телефоне клавиатуру с@или цифрами.autocompleteпозволяет браузеру подставить сохранённые данные.- Для коротких списков (до 5–6 вариантов) лучше радиокнопки, чем выпадающий список.
- Не дробите телефон или дату на несколько полей без необходимости.
Полный список значений autocomplete есть в документации MDN.
Валидация
- Проверяйте поле после того, как пользователь его покинул, а не на каждое нажатие клавиши — иначе ошибка появляется, пока человек ещё печатает.
- После исправления убирайте ошибку сразу, по мере ввода.
- Сообщение — под полем, красным цветом и иконкой или текстом, чтобы его видели люди с нарушением цветовосприятия.
- Текст ошибки объясняет, как исправить: не «Неверный формат», а «Введите email в формате name@example.com».
- При отправке с ошибками переводите фокус на первое ошибочное поле.
- Будьте терпимы к формату: принимайте телефон с пробелами, скобками и дефисами и нормализуйте его сами.
Обязательные поля
Если почти все поля обязательные, отмечайте необязательные словом «(необязательно)». Если обязательных мало — отмечайте их. Одинокая звёздочка без пояснения понятна не всем, поэтому расшифруйте её в начале формы.
Как сократить форму
Пример: форма заявки на консультацию.
| Было | Стало |
|---|---|
| Имя, Фамилия, Отчество | Имя |
| Email, Телефон, Telegram | Один способ связи на выбор |
| Компания, Должность, Размер компании | Уточняется на звонке |
| Город, Страна | Не нужны для заявки |
| Сообщение (обязательно) | Сообщение (необязательно) |
Вопросы для каждого поля: нужно ли оно прямо сейчас? Можно ли узнать это позже или определить автоматически?