Внутренняя компоновка: размеры по содержимому
Используйте внутренние размеры min-content, max-content и fit-content для компоновок, определяемых содержимым.
«Внутренняя компоновка: размеры по содержимому» — бесплатный урок CSS Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CSS Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CSS Academy содержит 4 уроков всего.
Что такое интринсивный дизайн?
Интринсивный дизайн, термин, введённый Дженом Симмонсом, означает предоставление содержимому возможности самостоятельно определять свой размер вместо навязывания явных размеров в пикселях. CSS предоставляет ключевые слова для интринсивного задания размеров, благодаря которым макеты естественным образом становятся адаптивными без переопределений, привязанных к контрольным точкам.
min-content и max-content
min-content: наименьший размер, в который помещается содержимое без переполнения (для текста перенос выполняется на каждой границе между словами). max-content: размер, необходимый для отображения содержимого в одной строке без переноса. Оба значения отражают фактические размеры содержимого.
fit-content
fit-content эквивалентен min(max-content, max(min-content, available)). Он увеличивается вместе с содержимым до размера доступного пространства, а затем выполняет перенос. Это идеальный вариант для кнопок и подписей, ширина которых должна соответствовать тексту, но не превышать ширину контейнера.
minmax() в сетке
minmax(min, max) в grid-template-columns задаёт минимальный и максимальный размер трека. minmax(200px, 1fr) создаёт столбец шириной не менее 200px, который может расширяться. В сочетании с auto-fill это создаёт адаптивные сетки с интринсивным изменением размеров.
auto-fill и auto-fit
Оба режима заполняют строку максимально возможным числом треков. auto-fill сохраняет пустые треки, оставляя число столбцов неизменным. auto-fit сворачивает пустые треки, поэтому заполненные треки расширяются и занимают всё доступное пространство. Используйте auto-fit для макетов, определяемых содержимым и расширяющихся на всю доступную ширину.
clamp() для плавной типографики
clamp(min, preferred, max) ограничивает значение заданными пределами. font-size: clamp(1rem, 2.5vw, 1.5rem) изменяет размер от 1rem до 1.5rem в зависимости от ширины области просмотра — это плавная типографика без медиазапросов.
Столбцы сетки, определяемые содержимым
grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)) создаёт адаптивную сетку, которая на очень узких областях просмотра состоит из одного столбца и автоматически добавляет столбцы по мере появления свободного места. Без медиазапросов и без JavaScript.
Интринсивное задание размеров с aspect-ratio
aspect-ratio: 16/9 заставляет элемент сохранять пропорции при изменении его ширины. В сочетании с width: 100% контейнер видео заполняет родительский элемент и всегда сохраняет соотношение 16:9 без JavaScript и хитростей с отступами в процентах.
Логические свойства
Интринсивный дизайн хорошо сочетается с логическими свойствами CSS (inline-size, block-size, margin-inline) и позволяет создавать макеты, работающие как в горизонтальном, так и в вертикальном режиме письма. Интринсивное задание размеров автоматически адаптируется к направлению письма.
Сравнение интринсивного и фиксированного макетов
Фиксированный: width: 300px — всегда 300px независимо от содержимого. Интринсивный: width: fit-content — ширина соответствует содержимому в пределах заданных ограничений. Для изменения фиксированных макетов нужны контрольные точки, а интринсивные макеты самостоятельно подстраиваются под содержимое и контекст.
Как избежать излишнего усложнения
Интринсивный дизайн наиболее эффективен, когда содержимое естественным образом отличается по размеру. Принудительное использование интринсивного задания размеров для известного и однородного содержимого добавляет сложность без пользы. Используйте явные размеры для фиксированных элементов оболочки интерфейса (навигации, панели инструментов), а интринсивное задание размеров — для областей содержимого.
Проверка знаний
Чем auto-fit отличается от auto-fill в свойстве grid-template-columns?
Итоги
Интринсивный дизайн использует ключевые слова CSS для задания размеров (min-content, max-content, fit-content), minmax() вместе с auto-fit, clamp() для плавного масштабирования и aspect-ratio, чтобы создавать макеты, определяемые размерами содержимого, а не контрольными точками области просмотра. В результате получаются естественно адаптивные макеты с меньшим количеством CSS и медиазапросов.
Часто задаваемые вопросы
Урок «Внутренняя компоновка: размеры по содержимому» бесплатный?
Да — полный текст урока «Внутренняя компоновка: размеры по содержимому» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CSS Academy, подпишись на CoddyKit PRO. Курс CSS Academy содержит 4 уроков всего.
Чему я научусь в уроке «Внутренняя компоновка: размеры по содержимому»?
Используйте внутренние размеры min-content, max-content и fit-content для компоновок, определяемых содержимым. Ты практикуешь CSS Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CSS Academy?
Предыдущий опыт не требуется. CSS Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Внутренняя компоновка: размеры по содержимому»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CSS Academy?
Да. Каждый урок CSS Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Компоновка с фиксированными подвалом и боковой панелью
- Компоновка «священный грааль» с Grid
- Каменная кладка: подходы на CSS и JS
- Внутренняя компоновка: размеры по содержимому