CSS-свойство overflow отвечает за то, что происходит с содержимым блочного элемента, когда оно выходит за границы. Например, если картинка выпадает из родительского контейнера, вы можете её обрезать или добавить полосу прокрутки.

🚀 Сегодня вам бесплатно доступен тренажёр по HTML и CSS.

Чтобы указать, как должно отображаться содержимое элемента…

<div class="container">
	<p>Константиновский Константин Константинович</p>
</div>

…нужно задать этому элементу стили:

.container {
  overflow: auto;
}

В этом примере мы добавим контейнеру полосу прокрутки, если имя не будет в нём помещаться.

Значения overflow

По умолчанию у overflow стоит значение visible, то есть содержимое будет отображаться как есть. Например, слишком длинный текст выйдет за пределы родительского элемента.

overflow: visible

Значение hidden скрывает часть содержимого, которая не поместилась в контейнере.

overflow: hidden

Значение scroll добавляет полосы прокрутки.

overflow: scroll

Значение auto автоматически определяет, нужно ли добавлять полосы прокрутки. Полосы появляются, когда содержимое выпадает из родительского контейнера, и исчезают, если оно помещается целиком.

Это значение более гибкое: при overflow: scroll полосы прокрутки сохраняются, даже если элемент помещается в контейнере, а при overflow: auto они исчезают.

Отображение при overflow: scroll и overflow: auto

Ошибки при использовании overflow

Использовать overflow: hidden для обрезки важного текста — пользователь не увидит спрятанную информацию и не поймёт написанное. Гораздо уместнее использовать это значение для оформления сайта, например, чтобы обрезать часть декоративного изображения.

Использовать overflow: scroll для всего содержимого страницы — если так сделать, на странице появятся лишние полосы прокрутки.

Наследуется ли свойство overflow

Свойство не наследуется, но дочерние элементы будут отображаться с учётом значения overflow. Например, здесь текст «Я вообще не влезаю в эту строку» обрежется, если выйдет за пределы <div class="parent">:

<div class="parent">
  <div>
    Я вообще не влезаю в эту строку
  </div>
</div>
.parent {
  overflow: hidden;
}

Для дочерних элементов можно прописать собственное значение overflow:

<div class="parent">
  <div class="child">
  Я вообще не влезаю в эту строку
  </div>
</div>
.parent {
  overflow: hidden;
}
.child {
  overflow: auto;
}

В этом примере мы задали дочернему элементу свойство overflow: auto. То есть содержимое будет обрезано, но появится полоса прокрутки.

Чёрной рамкой обозначен родительский контейнер — по нему обрезается весь контент. Красной рамкой обведён дочерний элемент. Обратите внимание, что полоса прокрутки появилась именно у потомка, а не у родителя