Tailwind CSS Academy · Урок

Ограничения минимального и максимального размера

Не позволяйте элементам становиться слишком маленькими или большими с помощью utility-классов min-w-*, max-w-*, min-h-* и max-h-*.

Урок 3 из 413 шагов

«Ограничения минимального и максимального размера» — бесплатный урок Tailwind CSS Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Tailwind CSS Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Tailwind CSS Academy содержит 4 уроков всего.

Почему важны ограничения размера

Фиксированные ширина и высота не подходят для крайних размеров области просмотра: при слишком маленькой ширине содержимое сжимается, а при слишком большой текст становится неудобным для чтения. Свойства CSS min/max решают эту проблему, задавая ограничители: элемент может быть гибким в определённом диапазоне, но не выходит за заданные границы. Утилиты Tailwind min-w-*, max-w-*, min-h-* и max-h-* устанавливают такие ограничители с помощью простых имён классов.

<!-- Button that never shrinks below 120px or grows past 300px -->
<button class="min-w-[120px] max-w-xs bg-blue-500 text-white px-4 py-2 rounded">
  Constrained Button
</button>

Утилиты min-w-*

min-w-* не позволяет элементу стать уже указанного значения. Tailwind предоставляет min-w-0 (очень часто используется в гибких контейнерах), min-w-full, min-w-min, min-w-max и min-w-fit. Важнее всего min-w-0: он позволяет дочерним элементам flex- или grid-контейнера сжиматься меньше своей естественной ширины содержимого и устраняет многие ошибки переполнения макета.

<!-- Without min-w-0, long text overflows the flex container -->
<div class="flex gap-3 p-4 border rounded">
  <div class="w-10 h-10 shrink-0 bg-indigo-400 rounded-full"></div>
  <!-- min-w-0 allows text truncation inside flex child -->
  <div class="min-w-0">
    <p class="font-semibold truncate">Very Long Username That Would Overflow Without min-w-0</p>
    <p class="text-sm text-gray-500">Online</p>
  </div>
</div>

max-w-* для ширины контейнеров

max-w-* ограничивает максимальную ширину элемента. Tailwind предоставляет именованные размеры от max-w-xs (320px) до max-w-7xl (1280px), а также max-w-full, max-w-prose и max-w-screen-*. Сочетание max-w-7xl mx-auto — стандартный шаблон для центрирования содержимого страницы и предотвращения его чрезмерного растягивания на больших мониторах.

<!-- Standard page container -->
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
  <h1 class="text-3xl font-bold py-8">Page Title</h1>
  <p class="text-gray-600">
    Content constrained to 1280px max, centered on wide screens.
  </p>
</div>

max-w-prose для комфортного чтения

max-w-prose задаёт max-width: 65ch — примерно 65 символов в строке, что считается оптимальным для комфортного чтения согласно исследованиям. Применяйте его к тексту статей, записям блога и любому длинному содержимому, чтобы строки не становились слишком длинными на больших экранах. Единица ch масштабируется вместе с размером шрифта, поэтому длина строки остаётся удобной даже при изменении шрифта.

<!-- Article with comfortable reading width -->
<article class="max-w-prose mx-auto px-4 py-8">
  <h1 class="text-2xl font-bold mb-4">How Tailwind Works</h1>
  <p class="text-gray-700 leading-relaxed mb-4">
    Tailwind CSS takes a utility-first approach to styling. Instead of
    writing custom CSS, you compose designs by combining small, single-purpose
    classes directly in your HTML. This keeps your CSS bundle small and
    your component styles co-located with your markup.
  </p>
</article>

Справочник именованных размеров max-w-*

Именованные размеры max-w-* в Tailwind образуют логичную последовательность, соответствующую распространённой ширине компонентов интерфейса. max-w-xs (320px) подходит для всплывающих подсказок и мобильных карточек. max-w-md (448px) идеально подходит для модальных окон и форм. max-w-2xl (672px) — для содержимого статей. max-w-4xl (896px) подходит для областей содержимого панелей управления. Зная эти значения, легко выбрать подходящее ограничение, не измеряя пиксели.

<!-- Comparing different max-w sizes -->
<div class="space-y-3 p-4">
  <div class="max-w-xs bg-red-100 p-2 rounded">max-w-xs (320px)</div>
  <div class="max-w-sm bg-orange-100 p-2 rounded">max-w-sm (384px)</div>
  <div class="max-w-md bg-yellow-100 p-2 rounded">max-w-md (448px)</div>
  <div class="max-w-lg bg-green-100 p-2 rounded">max-w-lg (512px)</div>
  <div class="max-w-xl bg-blue-100 p-2 rounded">max-w-xl (576px)</div>
  <div class="max-w-2xl bg-purple-100 p-2 rounded">max-w-2xl (672px)</div>
</div>

min-h-* для элементов достаточной высоты

min-h-* гарантирует, что элемент будет не ниже указанного значения, даже если содержимого мало. min-h-screen (100vh) — стандартный вариант для оболочек страниц, предотвращающий появление пустого пространства под подвалом на коротких страницах. min-h-0 позволяет дочерним элементам flex-контейнера сжиматься меньше их исходного размера, что полезно в гибких макетах с ограничением переполнения.

<!-- Sticky footer pattern using min-h-screen -->
<div class="flex flex-col min-h-screen">
  <header class="bg-gray-900 text-white p-4">Header</header>
  <!-- flex-1 grows to fill remaining space -->
  <main class="flex-1 p-6">
    <p>Short page content</p>
  </main>
  <!-- Footer always stays at the bottom -->
  <footer class="bg-gray-200 p-4 text-center">
    Footer always at bottom
  </footer>
</div>

max-h-* для ограничения роста

max-h-* ограничивает максимальную высоту элемента. Это особенно важно для прокручиваемых раскрывающихся меню и панелей, которые не должны занимать весь экран. Сочетание max-h-60 overflow-y-auto является стандартным для раскрывающихся меню: они показывают до 15rem вариантов и добавляют полосу прокрутки, если вариантов больше. Без max-h-* раскрывающийся список из 200 пунктов закрыл бы всю страницу.

<!-- Dropdown list capped in height with scroll -->
<div class="relative w-64">
  <button class="w-full bg-white border rounded p-2 text-left">Select a country ▾</button>
  <ul class="absolute w-full bg-white border rounded shadow-lg max-h-60 overflow-y-auto mt-1 z-10">
    <li class="px-4 py-2 hover:bg-gray-100 cursor-pointer">Afghanistan</li>
    <li class="px-4 py-2 hover:bg-gray-100 cursor-pointer">Albania</li>
    <li class="px-4 py-2 hover:bg-gray-100 cursor-pointer">Algeria</li>
    <li class="px-4 py-2 hover:bg-gray-100 cursor-pointer">Argentina</li>
    <li class="px-4 py-2 hover:bg-gray-100 cursor-pointer">Australia</li>
    <li class="px-4 py-2 hover:bg-gray-100 cursor-pointer">Austria</li>
    <li class="px-4 py-2 hover:bg-gray-100 cursor-pointer">Belgium</li>
  </ul>
</div>

Сочетание ограничений min и max

Самый гибкий подход к заданию размера — сочетать min-w-*, max-w-* и базовую ширину. Общее правило CSS таково: элемент стремится иметь базовую ширину, но min-w не позволяет ему стать уже, а max-w — шире. Так создаётся гибкий диапазон, одновременно адаптирующийся к содержимому и области просмотра.

<!-- Button that stays between 150px and 300px wide -->
<div class="flex gap-4 flex-wrap">
  <button class="min-w-[150px] max-w-[300px] w-full sm:w-auto bg-purple-500 text-white px-4 py-2 rounded">
    Adaptive Button
  </button>

  <!-- Card that is at least 200px wide but no more than 400px -->
  <div class="min-w-[200px] max-w-[400px] flex-1 bg-purple-100 p-4 rounded">
    Fluid card between 200-400px
  </div>
</div>

max-w-screen-* для размеров контрольных точек

max-w-screen-sm, max-w-screen-md, max-w-screen-lg, max-w-screen-xl и max-w-screen-2xl в Tailwind задают максимальную ширину, точно соответствующую значениям адаптивных контрольных точек. Это позволяет создавать контейнеры, ограниченные текущей контрольной точкой. Такой подход удобен для фонов секций, растянутых на всю ширину, когда внутреннее содержимое остаётся ограниченным границей контрольной точки.

<!-- Full-width section background, constrained inner content -->
<section class="bg-blue-600 w-full py-16">
  <div class="max-w-screen-lg mx-auto px-4 text-white">
    <h2 class="text-3xl font-bold">Capped at lg breakpoint</h2>
    <p class="mt-2 opacity-80">Inner content constrained to 1024px maximum width.</p>
  </div>
</section>

Адаптивные ограничения

На разных контрольных точках ограничения могут отличаться. Распространённый шаблон max-w-full sm:max-w-md lg:max-w-lg используют для модального окна: на мобильном устройстве оно заполняет экран, на небольших планшетах ограничивается шириной 448px, а на больших экранах — 512px. Это не позволяет окну чрезмерно растягиваться на компьютерах и обеспечивает удобное использование на мобильных устройствах без горизонтальной прокрутки.

<!-- Responsive modal width constraints -->
<div class="fixed inset-0 bg-black/50 flex items-center justify-center p-4">
  <div class="w-full max-w-full sm:max-w-md lg:max-w-lg bg-white rounded-xl p-6 shadow-2xl">
    <h2 class="text-xl font-bold mb-4">Modal Title</h2>
    <p class="text-gray-600">Modal content here. Width adapts from full-screen on mobile to constrained on desktop.</p>
    <button class="mt-4 bg-blue-500 text-white px-4 py-2 rounded">Confirm</button>
  </div>
</div>

Практические ограничения для изображений

Адаптивные изображения особенно выигрывают от ограничений min/max. Задание max-w-full не позволяет изображениям выходить за пределы контейнера на небольших экранах, а min-w-0 позволяет им уменьшаться меньше естественного размера в гибких контейнерах. Класс object-cover в сочетании с ограничениями высоты создаёт популярный эффект миниатюр, используемый в компонентах карточек.

<!-- Responsive image that stays in bounds -->
<div class="max-w-sm">
  <img
    src="https://images.unsplash.com/photo-1461749280684-dccba630e2f6?w=400"
    alt="Coding"
    class="max-w-full h-48 object-cover rounded-t-lg w-full"
  />
  <div class="p-4 bg-white rounded-b-lg shadow">
    <h3 class="font-semibold">Image Card</h3>
    <p class="text-sm text-gray-500 mt-1">Image fills width, capped at max-w-sm container.</p>
  </div>
</div>

Быстрая проверка

Проверьте, насколько хорошо Вы усвоили концепции Tailwind CSS Mastery из этого урока.

Итоги урока

В этом уроке Вы узнали, что max-w-prose ограничивает ширину текста комфортными для чтения 65 символами в строке, min-h-screen вместе с flex-col и flex-1 создаёт шаблон с «прилипающим» подвалом, а max-h-* вместе с overflow-y-auto — стандартный подход для прокручиваемых раскрывающихся меню и панелей. Далее мы рассмотрим утилиты соотношения сторон для сохранения пропорций.

Можно начать бесплатно

Изучай HTML с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Ограничения минимального и максимального размера» бесплатный?

Да — полный текст урока «Ограничения минимального и максимального размера» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Tailwind CSS Academy, подпишись на CoddyKit PRO. Курс Tailwind CSS Academy содержит 4 уроков всего.

Чему я научусь в уроке «Ограничения минимального и максимального размера»?

Не позволяйте элементам становиться слишком маленькими или большими с помощью utility-классов min-w-*, max-w-*, min-h-* и max-h-*. Ты практикуешь Tailwind CSS Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Tailwind CSS Academy?

Предыдущий опыт не требуется. Tailwind CSS Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Ограничения минимального и максимального размера»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Tailwind CSS Academy?

Да. Каждый урок Tailwind CSS Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Utility-классы ширины
  2. Utility-классы высоты
  3. Ограничения минимального и максимального размера
  4. Соотношение сторон
← Назад к Tailwind CSS Academy