


Если после замены заголовка карточка разваливается, проблема часто в правилах размеров, а не в количестве отступов. В Auto Layout нужно определить, что задаёт ширину, что растёт по содержимому и какие элементы остаются фиксированными. Соберём учебную карточку занятия и проверим её на неудобном тексте.
В этом задании Mentoring.digital важен воспроизводимый результат: заголовок переносится, описание увеличивает высоту, кнопка не перекрывает текст. Размеры ниже заданы для упражнения и не являются стандартом всех интерфейсов.
Карточка содержит небольшую метку «Практика», заголовок «Разбор интерфейса», описание в две строки и кнопку «Посмотреть программу». Начальная ширина карточки 360 px. По вертикали её размер должен зависеть от содержимого.
Создайте отдельный фрейм Card и четыре перечисленных слоя. Текст кнопки поместите в собственный фрейм Button. Для включения Auto Layout выделите нужный фрейм или слои и нажмите Shift+A. На панели проверьте направление: Figma может выбрать его автоматически, но для Card нам нужно вертикальное.
Card: вертикальный Auto Layout
Label: текстовая метка
Title: заголовок
Description: описание
Button: горизонтальный Auto Layout
Button label: текст кнопки
Такую структуру проще проверять, чем группу из прямоугольников и отдельно лежащих надписей. Фон задайте самому Card, а фон кнопки самому Button. Не добавляйте отдельные прямоугольники для имитации внутренних отступов.
Fixed удерживает заданный размер. Hug contents подстраивает фрейм под дочерние объекты. Fill container позволяет дочернему объекту занять доступное пространство родителя с учётом его настроек. Ширина и высота настраиваются отдельно.
| Слой | Ширина | Высота |
|---|---|---|
| Card | Fixed: 360 px | Hug contents |
| Label | По тексту | По тексту |
| Title | Fill container | По содержимому текста |
| Description | Fill container | По содержимому текста |
| Button | Fill container | Hug contents |
| Button label | По тексту | По тексту |
У заголовка и описания проверьте перенос строк и автоматическое увеличение высоты текстового слоя. Не оставляйте фиксированную высоту на две строки, если текст вправе стать длиннее. Для верхнего Card режим Fill появится только при подходящем родительском Auto Layout; для самостоятельной карточки в упражнении используем Fixed.
Не пытайтесь одновременно заставить родителя Hug определять ширину по ребёнку, а ребёнка Fill определять её по родителю. Выберите один понятный источник размера. В нашем случае это ширина Card, поэтому текст заполняет её доступную часть.
Для Card задайте padding по 24 px и gap 16 px. Padding отделяет край фрейма от содержимого, gap разделяет соседние элементы. У Button задайте горизонтальные поля 16 px, вертикальные 12 px и выравнивание текста по центру.
При ширине Card 360 px и боковых полях 24 px доступная ширина составляет 312 px. Это контрольный расчёт для нашей конструкции без дополнительных ограничений. Если текстовая область получилась заметно уже, проверьте лишний вложенный фрейм, его padding и фиксированную ширину.
Не используйте пробелы в тексте, чтобы отодвинуть кнопку или выровнять надпись. При другом шрифте или переводе такая имитация перестаёт работать. Для одинаковых расстояний задавайте свойства контейнеров.
Допустим, рядом с меткой нужна иконка. Создайте Header row с горизонтальным Auto Layout и поместите туда квадрат 24 × 24 px и текст «Практика». Для Header row поставьте ширину Fill container, высоту Hug contents, gap 8 px и вертикальное выравнивание по центру. Квадрат оставьте фиксированным, тексту разрешите занимать оставшуюся ширину и расти по высоте.
Теперь горизонтальный Header row находится внутри вертикального Card. У каждого контейнера собственные поля и расстояния. Изменение gap у Card не должно раздвигать иконку с меткой: это проверяется на Header row.
Если нужно закрепить декоративный значок поверх угла, у него может быть отдельное исключение из потока. Но для заголовка, описания и кнопки не включайте Ignore auto layout: такой слой не участвует в обычном распределении места и может перекрыть соседей.
| Изменение | Критерий |
|---|---|
| Заголовок «Индивидуальный разбор сложного интерфейса и его состояний» | Высота заголовка и Card растёт, соседние слои сдвигаются |
| Описание увеличено до шести строк | Кнопка остаётся ниже текста с заданным gap |
| Ширина Card уменьшена до 280 px | Текст переносится, содержимое не выходит за края |
| Метка удалена из Card | На её месте не остаётся пустого прямоугольника |
| Кнопка «Посмотреть подробную программу занятия» | Надпись помещается или переносится по выбранным правилам, кнопка растёт по высоте |
Последняя проверка может потребовать сделать ширину Button label Fill container и включить центрирование текста: это позволяет многострочной надписи использовать доступную ширину. Короткая подпись сама по себе не проверяет длинную. Решение о переносе или сокращении текста должно соответствовать продукту, а не скрывать ошибку макета.
Сохраните рядом две копии карточки: исходную и с длинным содержимым. Для сравнения важны одинаковые правила, а не одинаковая итоговая высота. Если высота зафиксирована бизнес-требованием, отдельно определите ограничение строк и способ показать полный текст.
При передаче разработчику опишите поведение: что переносится, что растёт, какая ширина минимальна. Автолейаут в макете не заменяет адаптивную вёрстку и проверку реальной страницы. На индивидуальном курсе Figma можно разобрать ваш компонент, а наставник по Figma поможет проверить вложенность и ограничения на реальном содержимом.