Меня зовут Карен Ананян, я продуктовый дизайнер в компании SimpleOne

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

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

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

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

Перед тем как перейти к предлагаемому мной решению, давайте пройдемся по актуальным сегодня подходам.


Текущий подход

На сегодняшний день существуют два базовых подхода к адаптивному веб-дизайну интерфейсов под разные устройства и разрешения:

1. Responsive design (респонсивный / отзывчивый дизайн)

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

2. Adaptive design (адаптивный дизайн)

Основная идея этого подхода — перестраивать структуру отдельных блоков и элементов в зависимости от устройства. Например, меню с навигацией на больших мониторах может быть открыто всегда, а на мобильных девайсах скрываться в «бургер»-меню. Таким образом, адаптивный дизайн требует дополнительных ресурсов: нужно проектировать и реализовывать разные макеты под различные типы устройств.

Проблемы существующих подходов

  • Responsive design не всегда хорош, когда элементы «растягиваются» сверх меры и теряют удобочитаемость и приятный внешний вид.

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

Использование масштабирования

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

Так, существует функция Autoscale в no-code платформе Tilda, которая позволяет отображать сайт в похожем виде как на экранах ноутбуков, так и на широкоформатных мониторах. Вот несколько сайтов с включенной функцией:


Предлагаемое решение: Stretch, Scale, Switch (SSS)

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

Stretch → Scale → Switch

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

2) Scale: когда размеры экрана увеличиваются (или уменьшаются) значительно, мы начинаем пропорционально масштабировать макет целиком (меняя шрифты, отступы, размеры блоков и т. д.). По сути, берем уже проверенную структуру и увеличиваем (или уменьшаем) ее в соответствии с выбранным множителем (scale-фактором).

Пример расчетов

Давайте возьмем базовое разрешение 1200–1440 px. Если ширина экрана увеличивается до 1441–1920 px, мы применяем scale-фактор 1440 / 1200 = 1.2. Это означает, что элемент с изначальным размером шрифта 16 px будет увеличен пропорционально — до 19,2 px, сохраняя общий визуальный стиль и логику макета. 

Если же ширина экрана достигает, скажем, 1921–2560 px, то scale-фактор возрастает уже до (1920 / 1440) ≈ 1.33. Таким образом, мы можем использовать один и тот же дизайн, последовательно масштабируя все элементы, пока не достигнем следующего важного «порога», при котором потребуется полная перестройка структуры. 

Для упрощения подобного масштабирования на уровне верстки удобно использовать относительные единицы (em или rem), задавая базовый размер и затем масштабируя его в соответствии с выбранным scale-фактором. Ниже таблица с примером:

Пример таблицы расчетов с учетом scale-фактора
Пример таблицы расчетов с учетом scale-фактора
Пример CSS-свойств
Пример CSS-свойств

3) Switch: мы определяем ключевые точки (breakpoints), на которых наша структура уже не будет удобной при простом масштабировании или «растягивании». Здесь мы перестраиваем макет по принципам адаптивного дизайна — меняем сетку, убираем или добавляем элементы, перерабатываем расположение. В этот момент идет полноценная смена композиции.


Как это работает на практике

  1. Stretch (отзывчивость): элементы плавно подстраиваются под ширину экрана — «сжимаясь» или «растягиваясь».

  2. Scale (масштаб): при существенном изменении разрешения мы пропорционально «увеличиваем» или «уменьшаем» наш макет. Таким образом, даже при разрешениях 1920×1080 и выше, все остается гармоничным.

  3. Switch (адаптивность): при переходе к новым диапазонам разрешений (например, с десктопа на планшет или c планшета на смартфон) мы переходим на другую сетку, тип и расположения основных блоков. В этот момент могут появиться совершенно новые виды визуализации контента или измениться тип навигации (например, скрытое «бургер»-меню вместо полноценного хедера). 

  4. После этого мы возвращаемся к шагам Stretch и Scale и продолжаем адаптацию интерфейсов по тому же принципу, пока следующий «скачок» в разрешении не потребует новой перестройки. 

Таким образом мы получаем, например, 3 разных адаптивных версии сайта (Десктоп, планшет и мобильное устройство), которые внутри каждой из них делятся на диапазоны разрешений. Внутри каждого диапазона применяется  правила Responsive design, а при переходе между ними происходит общее масштабирование.

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


Подведем итог

Подход SSS (Stretch, Scale, Switch) позволяет решать главную задачу — создавать удобный и пропорциональный веб-интерфейс, приятный для восприятия пользователя и не требующий чрезмерных усилий при проектировании и разработке. Он отлично сочетается с адаптивностью и отзывчивостью, дополняя их масштабированием. А главное — вы всегда можете четко определить, когда вам стоит просто «подвинуть» элементы, а когда — перестроить их полностью.

Как думаете, сможет ли описанный подход помочь вам в работе над сложными проектами? Если у вас уже есть опыт применения похожего решения или свои наработки, поделитесь ими в комментариях!

Комментарии (18)


  1. fesfdi
    18.02.2025 15:04

    Хорошая статья


  1. PEACE_dez
    18.02.2025 15:04

    ИДЕЯ выглядит интересной.

    есть ли примеры реализации?


    1. Ananyan_K Автор
      18.02.2025 15:04

      Очень верно подмечено, что подход на данный момент является идеей, которой хотелось поделиться.

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

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


      1. MaxLevs
        18.02.2025 15:04

        А что насчёт какого-нибудь pet-проекта в формате proof-of-concept? Было бы интересно ознакомиться.


        1. Ananyan_K Автор
          18.02.2025 15:04

          Проблема Pet-проекта заключается в том, что для него нужно дополнительное время) Но идея хорошая, подумаю над этим, спасибо!


      1. sergfila
        18.02.2025 15:04

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


  1. alexandertortsev
    18.02.2025 15:04

    Уже давно многие сайты и фреймворки так умеют.


  1. Asantasan
    18.02.2025 15:04

    Не знаю подойдет ли к вашей идее, но можно еще так: на html задаем размер шрифта, а дальше вместо пикселей используем rem. С помощью медиа запросов контролируем размер шрифта. Так можно добиться одинакового вида (в основном) на десктопах


    1. Ananyan_K Автор
      18.02.2025 15:04

      Да, все верно, должна подойти. Такая концепция приводится в статье в расчете для шага scale в раскрывающемся спойлере с примером.


  1. vhlv
    18.02.2025 15:04

    Извините, конечно, но это база. И выдавать ее как свою разработку очень странно.


    1. Ananyan_K Автор
      18.02.2025 15:04

      Часть описанных подходов, такие как Responsive и Adaptive design, действительно часто применяется в адаптивном веб-дизайне.

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


      1. badangel
        18.02.2025 15:04

        Вероятно, тут можно посмотреть.


  1. maxwellblack
    18.02.2025 15:04

    Единицы VW и VH делают именно то что вам нужно


    1. Ananyan_K Автор
      18.02.2025 15:04

      Возможно их тоже можно попробовать применить, однако VW и VH выстраивают размеры исходя из % вьюпорта.

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


      1. Alexufo
        18.02.2025 15:04

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

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


    1. Alexufo
      18.02.2025 15:04

      Нет, автор clamp() ищет


  1. IKStantin
    18.02.2025 15:04

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


  1. Nataha13579
    18.02.2025 15:04

    Супер, спасибо