Раскрывающийся список Select

В раскрывающемся списке (селекте) можно выбрать значение из заранее известного набора вариантов.

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

Когда использовать

Используйте селект для выбора одного значения из 5 — 25 вариантов:

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

Если значений в списке до 5, лучше использовать группу радиокнопок или  переключатель. Если значений больше 25 — используйте комбобокс.

Описание работы

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

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

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

Неправильно

Правильно

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

Чтобы пользователь мог отменить выбор, добавьте в список соответствующий пункт. Например, «Все», «Любой», «Неважно». Отделите такой пункт линией.

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

Название

Названия селекта и вариантов пишутся с заглавной буквы и формулируются так, чтобы:

  • было понятно, что можно выбрать только 1 вариант;
  • названия не содержали повторяющуюся часть;
  • название селекта не дублировалось в вариантах списка.

Неправильно

Правильно

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

Неправильно

Правильно

Размер и расположение

Ширина кнопки должна быть такой, чтобы большая часть значений из списка помещалась полностью:

Неправильно

Правильно

Если выбранное значение не помещается, появляется многоточие:

Раскрывающийся список не может быть меньше селекта по ширине.

Неправильно

Правильно

Красиво, когда список шире селекта на 24 — 40 px.

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

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

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

Обычно список раскрывается вниз. Минимальная высота списка со скроллингом — 200 px. При наличии места список стремится отобразить максимум вариантов и расширяется до высоты 450 px.

Исключение — если раскрывающийся список находится у нижней границы окна. В таком случае он открывается вверх.

Управление клавиатурой

Раскрывающийся список получает фокусную обводку только при переходе клавишей Tab. При клике фокусная обводка не появляется.

В свёрнутом состоянии клавиши Enter и раскрывают список и перемещают ховер на первый пункт в списке.

В развёрнутом состоянии клавиши и перемещают ховер, а по Enter происходит выбор. После этого фокус переходит на следующий контрол.

Валидация

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

Дизайн

Селект внешне похож на кнопку, но радиус скругления его углов повторяет радиус скругления инпута.

Текст в селекте выравнивается по левому краю. По правому краю — иконка стрелки из библиотеки интерфейсных иконок.

У выпадающего списка есть тень.

Пункты списка можно дополнять пояснениями. 

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

Адаптивность

Список раскрывается на всю ширину экрана с отступами 16 px от левого и правого края и 40 px от нижнего.

Вверху списка всегда располагается заголовок.

Высота списка зависит от количества пунктов внутри него. При большом количестве пунктов список сохраняет отступ в 40 px от верхнего края экрана.

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

Если список длинный и не входит в видимую часть экрана, то он скроллится до крайнего положения с отступом в 80 px от нижней части.