Great wall hover h3 (грейт волл ховер х3)

Не всё бывает тем, чем кажется

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

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

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

Про анимацию ховеров

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

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

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

Наводим порядок

Button, SelectList, Table, Chip, Lable, Switch, Pagination, навигация в левом меню

Какой тип решили использовать: Изменение фона

Кнопки в этой группе оказались самыми проблемными — у них оказалось сразу 3 типа ховера.

Мы решили сделать появление подложки единого цвета у кнопок, которые изначально не имеют никакого фона

Кнопки визуально похожие на ссылки получают важное отличие от ссылок при ховере

Смену цвета у иконки мы оставили для активного состояния кнопки (например: tooltip или кнопка фильтров) и для того случая, когда зона наведения больше стандартного размера кнопки (например, у нас это кнопка закрытия toast)

Пример активной кнопки

Rating

Какой тип решили использовать: Изменение фона и изменение цвета иконки

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

RadioLine, CheckLine и Tab

Какой тип решили использовать: Изменение цвета текста

Приводим ховер в RadioLine, CheckLine к виду текущего ховера у табов — изменяем только цвет текста при наведении.

Убиваем двух зайцев разом: избавляемся от типа ховера с появлением обводки и улучшаем анимацию у RadioLine — в варианте с обводкой при перемещении синей подложки иногда заметно исчезающую обводку, что выглядит некрасиво.

Косяк в анимации в слоууууумо

Checkbox

Какой тип решили использовать: Изменение фона и бордера

Тут все просто: у компонента есть два состояния — выбранный и не выбранный — и соответственно два типа ховера — меняется фон и меняется бордер.

Input, MultiInput, TextArea, Select, Radiobutton

Какой тип решили использовать: Изменение бордера