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

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

Список «Входящие» с организациями в десктопном окне с боковым меню из иконок и на телефоне, где меню спрятано в бургер, названия обрезаны, а метка «Ожидает доработки» стоит над названием

Адаптивность — это способность интерфейса меняться в зависимости от типа и размера устройства. Адаптивный интерфейс — это интерфейс, который:

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

Адаптивная вёрстка

Адаптивная вёрстка автоматически подстраивает интерфейс под разные размеры экранов. Точки, в которых интерфейс меняется, называют брейкпоинтами. Чтобы интерфейс корректно отображался на всех устройствах, дизайнер готовит несколько макетов: минимум два — для десктопа и мобильного устройства. Часто добавляют и промежуточные: для планшетов или узких экранов ноутбуков. Ширина макета должна соответствовать брейкпоинтам.

Брейкпоинты 320, 450 и 750 px и схема страницы с поиском для каждого диапазона: на узком экране плитки под поиском в два ряда, на среднем — в один, на широком ещё и блоки ниже встают в две колонки

Адаптивность Контур.Фокуса

Преимущества адаптивной вёрстки

  • Не требуется специальная команда мобильных разработчиков. Адаптивная версия сервиса создаётся и поддерживается самостоятельно продуктовыми командами.
  • Интерфейс сохраняет целостность, даже если пользователь увеличивает масштаб в системе или браузере.
  • Порог входа ниже: пользователю не нужно искать приложение в сторе и устанавливать его.
  • Не нужно заново привыкать к интерфейсу: паттерны остаются знакомыми.

Когда стоит делать адаптивный интерфейс

  • Если часть пользователей заходит в сервис с мобильных устройств — это уже повод задуматься об адаптивной версии.
  • Если у вас есть мобильное приложение, а мобильное устройство — важная точка входа. Адаптивная версия подстрахует, если с приложением что-то случится.
  • Если планируется расширение аудитории и вы хотите привлечь пользователей, которые работают с телефонов и планшетов.
  • Если пользователю важно быть в курсе событий в сервисе и он готов проверять обновления даже с телефона.

Как организовать работу над адаптивами

  1. Соберите данные. Соберите или запросите статистику входа с различных устройств в вашем сервисе.
  2. Обсудите детали с командой. Проконсультируйтесь с фронтенд-разработчиками и тестировщиками. Возможно, существуют технические ограничения, которые могут повлиять на реализацию адаптивного дизайна. Также стоит учесть, что после завершения разработки может потребоваться увеличение количества тест-кейсов у тестировщика. Предупредите всю команду о будущих изменениях.
  3. Определите охват и приоритеты. Решите, какие страницы продукта станут адаптивными и в каком порядке будет идти работа. Рекомендуем сделать адаптивность минимум для главной страницы, так как это первая точка входа. Далее можно двигаться по одному из сценариев:

    Если у вас в сервисе нет главной страницы, сделайте адаптивной стартовую страницу — это страница, которая открывается по прямой ссылке или сразу после авторизации.

    • адаптировать в первую очередь ключевые сценарии и разделы;
    • идти по порядку — отдавая в разработку макеты по мере готовности;
    • внедрять адаптивность в рамках текущих продуктовых задач.
  4. Выберите брейкпоинты. Ориентируйтесь на статистику размеров экранов по вашему продукту и другим сервисам Контура.
  5. Продумайте логику адаптивности основных элементов интерфейса. Опишите, как будет адаптироваться навигация и контентная область интерфейса в выбранных брейкпоинтах. Сформулируйте универсальные правила, чтобы адаптировать практически любой экран с минимальными усилиями.
  6. Выберите и настройте дизайн-токены. Для каждого брейкпоинта опишите изменения базовых параметров визуальной системы, если они нужны.

    Дизайн-токены — это переменные, в которых зафиксированы базовые значения визуальной системы: отступы, цвета, типографика, стили объектов, анимация и пр.

  7. Нарисуйте макеты. Ориентируйтесь на правила, которые описаны выше.

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

Брейкпоинты и размеры экранов

Обычно брейкпоинты совпадают с популярными разрешениями экранов. Можно выделить пять групп устройств:

Пять групп устройств: Mobile — до 767 px, телефон; Tablet — от 768 до 991 px, планшет; Narrow Desktop — от 992 до 1199 px, планшет или маленький ноутбук; Desktop — от 1200 до 1439 px, ноутбук; Wide desktop — от 1440 px, большой монитор

На экранах с высокой плотностью пикселей (ретина) физическое разрешение экрана больше, чем виртуальное. Например, у айфона 16 физическое разрешение 1 179 × 2 556 px, а виртуальное 393 × 852 px. Интерфейсы проектируются под виртуальные разрешения.

Брейкпоинты можно адаптировать под нужды конкретного продукта. Например, если интерфейс включает широкие таблицы, имеет смысл переходить к десктопному виду уже при ширине 1 300 px. Можно также добавить брейкпоинт для ультрашироких экранов ( > 1 920 px).

Поведение основного лейаута

В продуктах Контура один из основных лейаутов включает в себя боковое меню.

Меню отображается в развёрнутом виде, когда в контентной области достаточно места.

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

Если пространство ограничено — меню сворачивается в узкий столбец с иконками.

То же окно уже: меню свёрнуто в узкую колонку с иконками, второй колонки нет, контентная область заняла освободившееся место

На мобильных устройствах место ещё более ограничено — здесь меню прячется в бургер или превращается в табы.

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

Если есть и мобильное приложение, и адаптивная версия, то порядок табов должен быть одинаковым.

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

Поведение контентной области между брейкпоинтами

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

Гибкий или резиновый подход

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

Контентная область подстраивается под ширину экрана

Ступенчатый или фиксированный подход

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

Контентная область имеет фиксированную ширину между брейкпоинтами

Комбинированный подход

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

Сочетание разных подходов для адаптивности контентных областей

Мобильные устройства

На мобильных устройствах контентная область обычно занимает всю ширину экрана.

Схема мобильного экрана: под шапкой с бургером и поиском контентная область на всю ширину

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

Токены

Проектировать и верстать интерфейсы проще, когда есть система. Для построения системы используются дизайн-токены: цвета, шрифты, отступы, тени, скругления и другие визуальные элементы.

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

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

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

Длина строки на мобильном телефоне меньше, чем на десктопе. Поэтому, помимо кегля, в адаптивной версии меняется высота строки: если на десктопе использовался стиль Body Wide, то на телефонах он становится Body.

Размер и высота строки стилей на Desktop и Mobile: Header 1 — 40/48 и 32/40, Header 2 — 32/40 и 24/32, Header 3 и Body Large 18 не меняются, Body Medium 16 Wide 16/24 становится Body Medium 16 — 16/22

Изменение размера шрифтов на разных брейкпоинтах

Отступы L, M и S на Desktop, Tablet и Mobile: L — 48, 40 и 32 px, M — 24, 24 и 16 px, S — 8 px на всех

Изменение размеров отступов на разных брейкпоинтах

Такие таблицы помогут систематизировать размеры элементов на разных разрешениях экранов и не запутаться в них.

Приёмы

Скрытие контента

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

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

Таблица с колонками «Отправитель», «Документы», «Статус» и «Дата», а на узком экране — только «Отправитель» и «Статус»Кнопка «Скачать отчёт» с иконкой загрузки, а на узком экране — только иконка без текстаТабы «Договоры», «Отчёты», «Акты» и «Заявления», а на узком экране — «Договоры», «Отчёты» и раскрывающийся пункт «Ещё»

Строка → Колонка

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

При этом структура самих элементов может остаться прежней — достаточно изменить порядок расположения.

На десктопе блоки с 1 по 4 стоят в строку, под ними три колонки блоков с 5 по 7, а на мобильном все блоки идут друг под другом по порядку номеров

Изменение размеров

Чтобы эффективно использовать пространство на маленьком экране, можно уменьшать размер заголовков, отступов, иконок или картинок. Так можно сэкономить место на экране и поместить на нём больше информации.

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

Страница «Мои организации»: на десктопе список организаций на белом острове с крупным заголовком и кнопкой «Добавить», на телефоне список без острова, заголовок мельче, вместо кнопки — плюс в шапке

Изменение представления

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

Таблица с колонками «Отправитель», «Документы», «Статус», иконкой и «Дата», а на узком экране — карточки, в которых те же данные идут строками, а иконка — справаТабы «Договоры», «Отчёты», «Акты» и «Заявления», а на узком экране вместо них раскрывающийся список со значением «Договоры»Раскрывающиеся списки-фильтры «Уровень», «Команда» и «Роль», а на узком экране вместо них одна кнопка «Фильтры» с иконкой воронки

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

Рекомендации

Размеры элементов и контролов

В адаптивной вёрстке рекомендуем использовать размеры Medium и Large для контролов, даже если в десктопе использовались Small. Во-первых, контролы Small слишком малы для комфортного взаимодействия на мобильных устройствах — по ним трудно попасть пальцем, особенно если это иконки-кнопки. Во-вторых, в iOS шрифты меньше 14 px автоматически масштабируются, это может сломать визуальное представление интерфейса.

Подробнее о размерах элементов — в гайде «Доступность».

Если всё же используете компактный элемент, обязательно увеличьте кликабельную область — она должна быть не меньше 40×40 px. Например, так сделано с иконкой закрытия в модальных окнах.

Модальное окно «Создание заявки» на телефоне: у крестика закрытия выделена кликабельная зона 64 px — заметно больше самой иконки

Поведение без ховеров

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

Таблица, где чекбокс и иконки действий появляются только у строки под курсором, а на узком экране — карточки, у каждой сразу видны чекбокс и кебаб-меню

Удобство использования одной рукой

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

Клавиатура

При проектировании форм нужно учитывать, что часть экрана займёт клавиатура. Она может закрыть важный контент: инструкции или валидации полей. Рекомендуем на этапе проектирования визуализировать клавиатуру прямо на макете, чтобы понять, как она влияет на интерфейс.

Мобильная форма «Письмо в ФНС» с полями «Имя», «Почта», «Телефон», «Комментарий», загрузкой файла и кнопкой «Отправить»
Та же форма с открытой клавиатурой: курсор в поле «Комментарий», клавиатура закрывает нижнюю половину экрана, верхние поля ушли за край, а кнопка помощи наезжает на «Отправить»

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

Также полезно добавить кнопку «Свернуть» на клавиатуре, чтобы пользователи могли легко скрывать её, не целясь в пустую область экрана.

Валидации

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

Форма с открытой клавиатурой: поле «Почта» со значением «mail@kontur.» в красной рамке, под ним тултип «Неверный адрес почты» закрывает следующее поле

Допустимо

Та же форма: под полем «Почта» в красной рамке красный текст «Неверный адрес почты», следующее поле «Телефон» не закрыто

Правильно

Залипающие элементы

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

Модальное окно «Письмо в ФНС» в мобильном браузере с открытой клавиатурой: заголовок и кнопки «Отправить» и «Отменить» залипли, между ними видно только поле «Почта» и край поля «Телефон»

Неправильно

То же окно без залипающих элементов: заголовок уехал вверх, над клавиатурой видны поля «Почта», «Телефон», «Комментарий» и кнопка «Отправить»

Правильно

Та же форма во весь экран, без модального окна и залипающей шапки: над клавиатурой помещаются поля «Имя», «Почта» в фокусе, «Телефон» и «Комментарий»

Правильно

Скейл страницы

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

Подготовка изображений

По возможности используйте векторную графику (SVG).

Если у вас в сервисе используются растровые изображения, учитывайте, что они могут открываться на экранах с высокой плотностью пикселей (ретина и супер ретина). У таких экранов количество пикселей на дюйм (PPI) выше, чем у обычных. Если использовать обычное изображение в масштабе @1x на ретина-дисплеях, то оно будет выглядеть плохо.