Рекомендации по формам входа в систему
Используя кроссплатформенные функции браузеров, создавайте безопасные и простые в применении формы входа в систему с поддержкой специальных возможностей.
Если нужно, чтобы пользователи выполняли вход в систему на вашем сайте, очень важно правильно разработать дизайн формы входа. Последнее особенно важно для пользователей, у которая плохая связь, которые пользуются сайтом с мобильных устройств, спешат или находятся в стрессе. Плохо разработанные формы входа в систему увеличивают показатель отказов от использования сайта. Каждый отказ может означать потерянного и недовольного пользователя, а не просто упущенную возможность входа в систему.
Вот пример простой формы входа в систему, в дизайне которой реализованы все рекомендации:
Контрольный список #
- Используйте понятные элементы HTML:
<form>,<input>,<label>и<button>. - Для каждого поля ввода данных создайте соответствующую подпись
<label>. - Для доступа к встроенным функциям браузера используйте атрибуты элементов:
type,name,autocompleteиrequired. - Присвойте атрибутам
nameиidстабильные значения, которые не будут изменяться между загрузками страницы или развертываниями веб-сайта. - Поместите форму входа в систему в отдельный элемент .
- Примите все меры для успешной отправки формы.
- Для ввода пароля в форме регистрации и для ввода нового пароля в форме сброса пароля используйте параметры
autocomplete="new-password"иid="new-password". - Для ввода пароля при входе в систему используйте параметры
autocomplete="current-password"иid="current-password". - Реализуйте функцию «Показать пароль».
- Для ввода пароля используйте элементы
aria-labelиaria-describedby. - Не дублируйте вводимые данные.
- Разрабатывайте формы таким образом, чтобы мобильная клавиатура не закрывала собой поля ввода данных и кнопки.
- Проверьте, удобно ли работать с формами на мобильных устройствах: используйте хорошо читаемый текст и убедитесь, что поля ввода данных и кнопки достаточно велики, чтобы использовать их в качестве сенсорных элементов управления.
- Используйте фирменные оформление и стиль на страницах регистрации и входа в систему.
- Выполните тестирование как в «полевых», так и в лабораторных условиях: добавьте в потоки регистрации и входа в систему средства аналитики страниц, аналитики взаимодействия и ориентированного на пользователей измерения производительности.
- Выполните тестирование в разных браузерах и на разных устройствах: поведение формы может значительно отличаться на разных платформах.
Используйте понятный HTML #
Используйте элементы, созданные для форм: <form>, <label> и <button>. Они позволяют использовать встроенные функции браузера, лучше поддерживать специальные возможности и делают разметку понятной.
Используйте элемент <form> #
У вас может возникнуть соблазн вложить поля ввода данных в элементы <div> и отправлять входные данные исключительно с помощью JavaScript. В общем случае лучше использовать старый простой элемент <form>. Благодаря этому ваш сайт будет доступен для программ чтения с экрана и других устройств, обеспечивающих специальные возможности, вы сможете использовать ряд встроенных функций браузера, вам будет проще создавать базовые функциональные средства для входа в систему для старых браузеров, и это все будет работать даже в случае сбоя JavaScript.
Используйте элемент <label> #
Создать подпись для поля ввода данных можно с помощью элемента <label>.
<label for="email">Адрес электронной почты</label>
<input id="email" …>
Вот две причины, по которым нужно делать это.
- При касании подписи или щелчку по ней фокус будет перемещен на поле ввода данных, с которым связана подпись. Свяжите подпись с полем ввода данных, используя атрибут
forподписи с параметромnameилиidполя ввода данных. - Программы чтения с экрана воспроизводят текст подписи, когда фокус перемещается на подпись или на поле ввода данных, связанное с подписью.
Не используйте заполнители в качестве подписей, связанных с полями ввода данных. Люди склонны забывать, что было указано в поле ввода данных, как только они начинают вводить текст, особенно если они отвлеклись («Что нужно было ввести? Адрес электронной почты, номер телефона или идентификатор учетной записи?»). Есть много других потенциальных проблем с заполнителями: если вы до сих пор не согласны с этим, см. статьи «Не используйте атрибут заполнителя» и «Заполнители в полях формы вредны».
Вероятно, самый лучший вариант — размещать подписи над полями ввода данных. Это позволяет создать единообразный дизайн для мобильных устройств и ПК и (согласно исследованиям ИИ Google) ускоряет «сканирование» элементов управления пользователями. Подписи и поля ввода данных будут иметь полную ширину, и вам не придется ее корректировать, чтобы подписи и поля ввода данных соответствовали тексту подписей.
Откройте Glitch label-position на мобильном устройстве и убедитесь в этом сами.
Используйте элемент <button> #
Используйте элемент <button> для кнопок. Элементы кнопок поддерживают специальные возможности и встроенные функции отправки форм. Кроме того, к ним можно легко применять стили. Нет смысла использовать в качестве кнопки элемент <div> или какой-нибудь другой элемент.
Убедитесь, что на кнопке отправки написано, что она делает. Примеры: Создать учетную запись или Войти, но не Отправить или Начать.
Что нужно сделать для успешной отправки формы #
Сделайте так, чтобы диспетчеры паролей «понимали», что форма отправлена. Для этого можно воспользоваться двумя указанными ниже способами.
- Перейти на другую страницу.
- Имитировать переход с помощью метода
History.pushState()илиHistory.replaceState()и удалить форму ввода пароля.
Выполнив запрос XMLHttpRequest или fetch, убедитесь, что в ответе сообщается об успешном входе в систему и выполняется обработка входа в систему путем извлечения формы из DOM, а также имеется информация об успешном выполнении для пользователя.
Рассмотрите возможность отключения кнопки Войти после того как пользователь нажмет ее. Многие пользователи нажимают кнопки несколько раз даже на быстро реагирующих сайтах. Такие действия замедляют взаимодействие и увеличивают нагрузку на сервер.
И наоборот, не отключайте функцию отправки формы, ожидающую ввод данных пользователем. Например, не отключайте кнопку Войти, если пользователь не ввел PIN-код клиента. Пользователь может что-то пропустить в форме, а затем попытаться несколько раз нажать (отключенную) кнопку Войти и подумать, что она не работает. Если необходимо отключить функцию отправки формы, объясните пользователю, каких данных не хватает, когда он нажимает отключенную кнопку.
Не дублируйте поля ввода данных #
На некоторых сайтах пользователям необходимо дважды вводить адрес электронной почты или пароль. Это позволяет уменьшить количество ошибок для небольшого числа пользователей, но при этом всем пользователям нужно выполнять дополнительную работу, что увеличивает показатель отказов. Кроме того, нет смысла просить пользователя дважды вводить данные, когда браузеры автоматически вводят адреса электронной почты или предлагают надежные пароли. Лучше разрешить пользователям подтверждать свой адрес электронной почты (вам все равно нужно это сделать) и при необходимости упростить для них процедуру сброса пароля.
Максимально полно используйте возможности, предоставляемые атрибутами элементов #
Вот где действительно происходит волшебство! В браузерах есть несколько полезных встроенных функций, для которых используются атрибуты полей ввода данных.
Скрывайте пароли, но позволяйте пользователям просматривать их при необходимости #
Поля ввода паролей должны иметь тип type="password", чтобы можно было скрыть текст пароля и сообщить браузеру, что то или иное поле ввода данных предназначено для паролей. (Обратите внимание, что в браузерах используются различные методы определения ролей полей ввода данных и принятия решений о том, предлагать или не предлагать пользователям сохранять пароли.)
Добавьте значок или кнопку Показать пароль, чтобы пользователь мог проверить введенный текст. Кроме того, обязательно добавьте ссылку Забыли пароль?. См. раздел «Включение функции отображения пароля».
Предоставьте пользователям мобильных устройств подходящую клавиатуру #
Используя элемент <input type="email">, можно предоставить пользователям мобильных устройств подходящую клавиатуру и включить базовую встроенную функцию проверки адреса электронной почты в браузере. При этом не потребуется использовать JavaScript.
Если вам нужно использовать номер телефона вместо адреса электронной почты, элемент <input type="tel"> позволяет активировать клавиатуру для ввода номера телефона на мобильном телефоне. При необходимости также можно использовать атрибут inputmode: элемент inputmode="numeric" идеально подойдет для ввода числовых PIN-кодов. Подробные сведения см. в статье «Все, что вы хотели знать о режиме ввода».
Клавиатура на экране мобильного устройства не должна закрывать собой кнопку «Войти» #
К сожалению, если вы не будете аккуратны, клавиатура на экране мобильного устройства может закрыть собой форму или (что еще хуже) кнопку Войти. В этом случае пользователи могут прекратить пытаться войти в систему, прежде чем осознают, что произошло.
По возможности избегайте этого, отображая поля ввода адреса электронной почты, телефона и пароля, а также кнопку Войти в верхней части страницы входа в систему. Остальной контент разместите под этими элементами.
Выполните тестирование на разных устройствах #
Вам потребуется выполнить тестирование на ряде устройств, используемых вашей целевой аудиторией, и внести соответствующие корректировки. С помощью BrowserStack можно бесплатно тестировать проекты с открытым исходным кодом на различных реальных устройствах и браузерах.
Попробуйте использовать две страницы #
Некоторые сайты (в том числе Amazon и eBay) избегают этой проблемы, запрашивая адрес электронной почты или номер телефона и пароль на двух страницах. Кроме того, этот подход упрощает взаимодействие с пользователем: пользователю требуется выполнять только по одной задаче за раз.
В идеальном случае следует реализовать этот подход с помощью одного элемента