overflow: управление переполнением
Свойство
overflowопределяет, что происходит с содержимым блока, когда оно не помещается в заданные размеры: видно, скрыто или появляется прокрутка.
Зачем нужно
Без overflow содержимое просто вылезает за границы блока, ломая раскладку. Контроль переполнения нужен для скроллируемых списков, обрезки текста, создания блочного контекста и исправления проблем с float.
Где используется
- Скроллируемые боковые панели и таблицы (
overflow: auto) - Обрезка изображений и карточек (
overflow: hidden) - Контейнер для float-элементов (clearfix через
overflow: hidden) - Исправление проблем с
min-widthво Flexbox - Горизонтальный скролл для таблиц на мобильных
Значения
.box {
overflow: visible; /* по умолчанию: контент вылезает за блок */
overflow: hidden; /* скрыть всё, что выходит за границы */
overflow: scroll; /* всегда показывать полосы прокрутки */
overflow: auto; /* полосы только если нужны */
overflow: clip; /* обрезать без создания блочного контекста (новее) */
}
/* Раздельно по осям */
.box {
overflow-x: auto; /* горизонтальная прокрутка */
overflow-y: hidden; /* вертикаль скрыть */
}
Примеры
Скроллируемый список
.sidebar {
height: 400px;
overflow-y: auto; /* вертикальная прокрутка при необходимости */
}
<div class="sidebar">
<ul>
<li>Пункт 1</li>
<!-- много пунктов -->
</ul>
</div>
Обрезка изображения в карточке
.card__image {
width: 100%;
height: 200px;
overflow: hidden;
}
.card__image img {
width: 100%;
height: 100%;
object-fit: cover;
}
Горизонтальный скролл таблицы
.table-wrapper {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
<div class="table-wrapper">
<table><!-- широкая таблица --></table>
</div>
Блочный контекст форматирования (BFC)
overflow: hidden и overflow: auto создают новый Block Formatting Context:
- Элемент содержит в себе float-потомков
- Не допускает схлопывания внешних отступов
.container {
overflow: hidden; /* классический clearfix */
}
Частые ошибки
overflow: scrollвсегда — полосы прокрутки появляются даже когда не нужны; лучшеauto.overflow: hiddenблокируетposition: sticky— еслиoverflowзадан на родителе,stickyвнутри перестаёт работать.- Забыть обёртку для таблицы — таблица не прокручивается сама по себе; нужен контейнер с
overflow-x: auto.