Когда верстаешь под разные экраны, блок может вести себя неадекватно: на мобильном сжимается так, что текст становится нечитаемым, а на огромном мониторе растягивается на полэкрана — и читать неудобно из‑за длинных строк. Чтобы этого не было, используют min-width и max-width. Они задают «границы приличия» для ширины блока: не уже X и не шире Y.
Что делают эти свойства
min-width— минимальная ширина. Если браузер хочет сделать блок уже, он остановится на этом значении. Блок может быть шире, но не уже.max-width— максимальная ширина. Блок может быть уже, но не шире этого значения.
Оба свойства работают независимо от того, какая у тебя модель размеров: content-box или border-box. Они ограничивают итоговую ширину блока (уже с учётом padding и border, если стоит border-box).
Простой пример
.box { width: 100%; min-width: 320px; max-width: 800px; }
Что происходит:
- На узком экране (меньше 320 px) блок будет 320 px — не сожмётся сильнее.
- На широком экране (больше 800 px) блок будет 800 px — не растянется дальше.
- Между 320 и 800 px блок занимает всю доступную ширину (
100%).
Это классический паттерн для «резиновой» карточки: она подстраивается под экран, но остаётся удобной для чтения.
min-width: зачем он нужен и где спасает
Защита от нечитаемости на мобильных
Если у тебя колонка на width: 100%, на очень узких экранах она может стать слишком узкой: длинные слова не влезают, появляются некрасивые переносы, текст трудно читать.
.article-content { min-width: 280px; }
Теперь даже на маленьком телефоне контент не сожмётся меньше 280 px, и ты можешь управлять переносами и шрифтами.
Чтобы flex‑элементы не схлопывались
В Flexbox элементы по умолчанию могут сжиматься, если места мало. Иногда это ломает дизайн.
.flex-item { flex: 1; min-width: 200px; /* не даст сжаться меньше 200 px */ }
Так ты говоришь: «растягивайся, если есть место, но не сжимайся меньше 200 px».
Для картинок и медиа
Картинка с width: 100% может стать микроскопической, если её родитель очень узкий.
img { max-width: 100%; min-width: 150px; }
Теперь картинка будет масштабироваться, но не станет меньше 150 px. Это полезно, например, для аватарок или иконок, которые на очень узких экранах не должны превращаться в точки.
max-width: чтобы не было «слишком широко»
Длинные строки и удобство чтения
Широкие колонки текста тяжело читать: взгляд устаёт, теряется строка. Оптимальная длина строки — примерно 60–80 символов, это обычно 500–800 px в зависимости от шрифта.
.content-wrapper { max-width: 720px; margin: 0 auto; }
Блок не будет шире 720 px и центрируется на больших экранах. На маленьких — займёт всю ширину.
Ограничение медиа
Для картинок, видео и iframe удобно ставить max-width: 100% плюс ограничение сверху, чтобы на огромных экранах они не становились гигантскими.
img, video, iframe { max-width: 100%; } .hero-image { max-width: 1200px; }
max-width: 100% защищает от вылезания за контейнер, а max-width: 1200px не даёт стать больше разумного предела.
Как они взаимодействуют с width
Порядок применения такой:
- Сначала берётся
width. - Потом применяются ограничения: если
widthменьшеmin-width— ставитсяmin-width; еслиwidthбольшеmax-width— ставитсяmax-width.
Примеры:
/* width = 400px, min-width = 500px → реально будет 500px */ .box1 { width: 400px; min-width: 500px; } /* width = 1200px, max-width = 800px → реально будет 800px */ .box2 { width: 1200px; max-width: 800px; }
Если одновременно заданы min-width и max-width, и min-width > max-width, победит min-width. Это важно помнить: минимальное значение всегда «сильнее».
Частые комбинации
«Резиновая» карточка с границами
.card { width: 100%; min-width: 280px; max-width: 600px; }
Идеально для статей, постов, карточек товаров.
Flex‑контейнер с одинаковыми колонками, но с защитой от сжатия
.grid { display: flex; gap: 16px; } .col { flex: 1; min-width: 240px; }
Колонки делят место поровну, но каждая не станет уже 240 px.
Картинка, которая не вылезает и не становится слишком большой
img.responsive { max-width: 100%; height: auto; display: block; } img.avatar { width: 100%; min-width: 64px; max-width: 128px; height: auto; }
Аватар будет масштабироваться в пределах 64–128 px, сохраняя пропорции.
Побочные эффекты и типичные ошибки
min-width может вызвать горизонтальный скролл
Если ты задаёшь min-width: 500px, а экран уже 360 px, блок не сожмётся и вылезет за границы родителя. Это нормально с точки зрения CSS, но на практике ломает мобильную версию.
Как избежать:
- Ставь
min-widthтолько там, где точно знаешь, что родитель достаточно широкий. - Или используй медиа‑запросы, чтобы отключать
min-widthна маленьких экранах:css.box { min-width: 500px; } @media (max-width: 600px) { .box { min-width: auto; /* или конкретное значение под мобильный */ } }
Конфликт с жёсткими размерами и Flexbox
Иногда min-width мешает Flex‑поведению, если не учесть, что элемент физически не может стать уже. В таких случаях лучше явно задать flex-shrink: 0 вместе с min-width:
.item { flex-shrink: 0; min-width: 200px; }
Тогда элемент не будет сжиматься даже при сильном дефиците места.
Не забывай про box-sizing
Если у блока есть padding или border, они входят в итоговую ширину. При border-box:
.box { box-sizing: border-box; width: 100%; min-width: 300px; padding: 20px; }
Минимальная ширина 300 px уже включает padding. Если стоит content-box, то min-width относится только к контенту, а padding прибавится сверху — и реальная минимальная ширина будет больше.
Полный пример: адаптивная сетка карточек
HTML:
<div class="grid"> <div class="card">Карточка 1</div> <div class="card">Карточка 2</div> <div class="card">Карточка 3</div> </div>
CSS:
* { box-sizing: border-box; } .grid { display: flex; flex-wrap: wrap; gap: 16px; } .card { flex: 1 1 auto; /* может расти и сжиматься */ min-width: 240px; /* не уже 240 px */ padding: 16px; border: 1px solid #ccc; }
Широкий экран
![]()
Узкий экран

Как это работает:
- Карточки пытаются занять равное место.
- Но ни одна не сожмётся меньше 240 px.
- Если места мало, карточки переносятся на новую строку (
flex-wrap: wrap). - На очень широких экранах карточки не станут гигантскими, потому что каждая ограничена своим
min-widthи тем, сколько места даёт Flex‑модель.
Практические советы
- Всегда держи в голове:
min-widthзащищает от чрезмерного сжатия,max-width— от чрезмерного растяжения. - Для контента (текста, карточек) ставь
max-widthв районе 600–800 px и центрируй черезmargin: 0 auto. - Для картинок ставь
max-width: 100%обязательно, а сверху — разумный лимит. - В Flex/Grid используй
min-width, чтобы элементы не схлопывались в кашу. - Проверяй на узких экранах: если появляется горизонтальный скролл — скорее всего, где‑то стоит слишком большой
min-widthбез учёта мобильного экрана.
