Вадим Скворцов
3 818

Улучшить взаимодействие с интерфейсом с помощью анимаций

Практические советы и примеры доработки дизайна.

Поделиться

В избранное

В избранном

Материал дизайнера и сооснователя Carbon Health Пабло Стэнли. Перевод подготовлен Николаем Гелларом.

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

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

Чтобы создать эти анимации, я следовал рекомендациям Material Motion, Animation Principles от IBM и The UX in Motion Manifesto.

Все взаимодействия были сделаны с использованием ранней версии InVision Studio. Скачать исходные файлы можно здесь.

Делайте контент во вкладках пролистываемым

Контент слева исчезает при переключении туда-сюда. Контент справа пролистывается при помощи вкладок
  • Хорошая анимация приводит к исчезновению контента при переходе из одного состояния в другое.
  • Отличная анимация демонстрирует непрерывность при переходе, перемещая контент между состояниями.

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

Соедините общие элементы карточки

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

При анимации перехода между различными состояниями посмотрите, есть ли между ними общие элементы и их соединение. С InVision Studio компоненты, которые повторяются на двух связанных экранах, автоматически соединяются при создании перехода движения (Motion transition). Это делает анимацию прототипирования лёгкой.

Ознакомьтесь с Motion Manifesto, чтобы просмотреть типы анимаций, которые можно применить. В приведённом выше примере используется комбинация принципов Masking, Transformation, Parenting и Easing.

Используйте каскадный эффект в контенте

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

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

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

Заставьте контент отодвигать другие элементы

Анимация слева реализуется поверх другого контента. Анимация справа выталкивает контент, когда он растет
  • Хорошие анимации перемещают и отображают элементы в контексте.
  • Отличные анимации показывают элементы, влияя на их окружение, когда они меняются.

Сделайте элементы в контенте чувствительными к окружению. Так контент привлекает или отталкивает элементы вокруг себя. Для получения дополнительных примеров ознакомьтесь с принципом Aware motion от Material Design.

Делайте появление меню контекстным

Меню слева выплывает снизу. Меню справа раскрывается из действия, создавшего его
  • Хорошо анимированные меню показывают содержимое, появляющееся со стороны кнопки, которая открыла их.
  • Отлично анимированные меню, появляются из действия, которое их создало, вырастая из точки соприкосновения.

Используйте кнопки для показа разных состояний

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

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

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

Привлекайте внимание к чему-то важному

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

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

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

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

#дизайн

{ "author_name": "Вадим Скворцов", "author_type": "self", "tags": ["\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 16, "likes": 24, "favorites": 69, "is_advertisement": false, "section_name": "default", "id": "35783", "is_wide": "" }
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]