В прошлом разделе мы освоили новые возможности Auto Layout: Wrap и Min/Max Width/Height. Теперь применим их, чтобы создавать по-настоящему сложные и адаптивные сетки. Вы научитесь строить структуры, которые гибко подстраиваются под разные размеры экранов, сохраняя при этом целостность дизайна.
Адаптивные сетки с Auto Layout: Основы
Адаптивная сетка — это не просто набор колонок, а система, которая позволяет вашему дизайну масштабироваться и перестраиваться. В Figma, благодаря Auto Layout, вы создадите такие сетки, используя комбинацию вложенных фреймов и свойств Fill container, Hug contents, Min/Max Width/Height.
Создаём базовую адаптивную сетку
Представьте: вам нужна сетка из карточек, которая будет отображать 2, 3 или 4 карточки в ряд в зависимости от ширины экрана.
- Создайте карточку. Начните с одной карточки. Убедитесь, что это компонент и внутри него Auto Layout для содержимого (заголовок, текст, изображение).
- Оберните карточки в Auto Layout. Выделите несколько экземпляров карточки и объедините их во фрейм с Auto Layout.
- Установите
DirectionнаHorizontal. - Задайте
Spacing between items(например, 24px). - Включите
WrapнаOn. Это ключевое свойство, которое позволит карточкам переноситься на новую строку, когда не хватает места.
- Установите
- Настройте адаптивность карточек.
- Для каждой карточки внутри родительского Auto Layout фрейма установите
Horizontal resizingнаFill container. Это позволит карточкам растягиваться, заполняя доступное пространство. - Теперь, чтобы карточки не становились слишком большими или слишком маленькими, используйте
Min WidthиMax Widthдля каждой карточки. Например,Min Width: 280px(минимальная ширина) иMax Width: 400px(максимальная ширина).
- Для каждой карточки внутри родительского Auto Layout фрейма установите
- Настройте родительский контейнер.
- Родительский фрейм, содержащий вашу сетку, также должен быть Auto Layout.
- Установите
Horizontal resizingнаFill container, если он должен заполнять всю ширину родителя (например, страницы). - Добавьте
Paddingпо бокам, чтобы сетка не прилипала к краям экрана.
Совет: Используйте
Min/Max Width/Heightне только для самих карточек, но и для родительских контейнеров. Это поможет контролировать общую ширину макета на разных брейкпоинтах.
Пример: Адаптивная галерея изображений
Создадим галерею, где изображения будут автоматически перестраиваться в зависимости от ширины экрана.
- Подготовьте изображения. Каждое изображение должно быть в отдельном фрейме с Auto Layout, чтобы вы могли контролировать его размеры. Установите для них
Min WidthиMax Width(например,Min Width: 200px,Max Width: 350px). - Создайте контейнер галереи. Объедините несколько фреймов с изображениями в один фрейм с Auto Layout.
Direction:HorizontalWrap:OnSpacing between items: Установите желаемый отступ.Horizontal resizing:Fill container(для самого контейнера галереи, чтобы он занимал всю доступную ширину).
- Проверьте адаптивность. Изменяйте ширину родительского фрейма (например, фрейма экрана смартфона, планшета, десктопа). Вы увидите, как изображения автоматически переносятся на новые строки, сохраняя заданные минимальные и максимальные размеры.
Сложные макеты с вложенными Auto Layout
Для более сложных макетов, таких как страницы с сайдбарами, шапками и футерами, используем вложенные Auto Layout.
Представим структуру страницы: Header, Main Content (с сайдбаром и основной областью), Footer.
- Основной контейнер страницы.
- Создайте фрейм страницы (например,
Desktop). - Преобразуйте его в Auto Layout.
Direction:Vertical.Spacing between items: 0 (или желаемый отступ между секциями).Padding: Задайте отступы по бокам и сверху/снизу.
- Создайте фрейм страницы (например,
- Header и Footer.
- Создайте
HeaderиFooterкак отдельные фреймы с Auto Layout внутри. - Для
HeaderиFooterустановитеHorizontal resizing:Fill container, чтобы они растягивались на всю ширину страницы.
- Создайте
- Main Content (основная часть).
- Создайте фрейм
Main Contentи преобразуйте его в Auto Layout. Direction:Horizontal(если сайдбар слева/справа) илиVertical(если контент располагается сверху вниз).Spacing between items: Отступ между сайдбаром и основной областью.Horizontal resizing:Fill container.Vertical resizing:Hug contents(илиFill container, если контент должен растягиваться по высоте).
- Создайте фрейм
- Sidebar и Content Area.
- Внутри
Main Contentсоздайте два фрейма с Auto Layout:SidebarиContent Area. - Для
Sidebar:Horizontal resizing:Hug contents(если ширина сайдбара фиксирована) илиFixed widthсMin/Max Widthдля адаптивности.Vertical resizing:Fill container(чтобы сайдбар растягивался по высоте основной области).
- Для
Content Area:Horizontal resizing:Fill container(чтобы основная область заполняла оставшееся пространство).Vertical resizing:Hug contents(илиFill container).
- Внутри
Важно: При работе со сложными макетами всегда начинайте с самого верхнего уровня иерархии, постепенно углубляясь. Проверяйте, как ведут себя элементы при изменении размеров родительских фреймов.
Практическое задание: Адаптивная карточка товара
Закрепим знания, создав адаптивную карточку товара, которая будет менять свою структуру в зависимости от ширины.
Цель: Создать карточку товара, которая на широких экранах отображает изображение и текст рядом, а на узких — изображение сверху, а текст под ним.
- Создайте базовые элементы:
- Изображение: Фрейм с изображением,
Horizontal resizing: Hug contents,Vertical resizing: Hug contents. - Блок текста: Фрейм с Auto Layout, содержащий заголовок, описание, цену, кнопку.
Direction: Vertical.
- Изображение: Фрейм с изображением,
- Объедините в основной контейнер:
- Создайте новый фрейм и поместите в него
ИзображениеиБлок текста. - Преобразуйте этот фрейм в Auto Layout.
- Установите
Spacing between items(например, 16px). - Ключевой момент: Установите
WrapнаOn.
- Создайте новый фрейм и поместите в него
- Настройте адаптивность элементов:
- Для
Изображения:Horizontal resizing:Fill container.Min Width: 120px (минимальная ширина изображения).Max Width: 200px (максимальная ширина изображения).
- Для
Блока текста:Horizontal resizing:Fill container.Min Width: 180px (минимальная ширина блока текста).Max Width: 300px (максимальная ширина блока текста).
- Для
- Проверьте результат: Изменяйте ширину родительского фрейма карточки. Вы увидите, как при достижении определенной ширины
Блок текстапереносится подИзображение, создавая вертикальный макет.
Это задание поможет вам лучше понять, как Wrap в сочетании с Min/Max Width и Fill container позволяет создавать по-настоящему гибкие и адаптивные компоненты.
Теперь, когда вы освоили создание сложных адаптивных сеток и макетов, следующим шагом будет углубление в возможности вложенных Auto Layout для создания ещё более гибких компонентов. Это позволит вам строить сложные UI-элементы, которые будут идеально подстраиваться под любые изменения контента и размеров.