CSS overflow-y — вміст, що не вміщується по вертикалі
Властивість overflow-y вказує, що зробити для переповненого по вертикалі елемента:
- Обрізати вміст, що поза межами елемента, без можливості його перегляду.
- Показати вміст, що поза межами елемента.
- Обрізати вміст, що поза межами елемента та для можливості перегляду обрізаного тексту, показати горизонтальну смугу прокручування.

В стані чернетки, існують три ключові слова, які можна буде використовувати в якості значень для overflow: no-display, no-content, clip.
Для того, щоб побачити результат дії overflow-y, разом з ним для елементу треба прописати також висоту(height або max-height), або задати значення nowrap для white-space.
Ви можете також використовувати властивість overflow для скороченого запису overflow-x i overflow-y.
Загальний опис
автор: NagarD
Синтаксис
overflow-y: visible|hidden|scroll|auto|initial|inherit;
Властивість overflow-y може отримувати 6 значень:
-
visible -
Відображає ввесь вміст елемента, навіть вміст, що за межами елемента. Без задання.
автор: Svitlana -
hidden -
Відображається лише область всередині елемента, все, що поза межами контейнера, буде обрізано.
автор: Svitlana -
scroll -
Вертикальна смуга прокручування буде завжди відображена.
автор: Svitlana -
auto -
Вертикальна смуга прокручування з'явиться, тільки при необхідності.
автор: Svitlana -
initial -
Встановлює властивість у значення без задання
автор: Svitlana -
inherit -
Вказує на спадковість властивості від свого батьківського елемента.
автор: Svitlana
| Значення без задання: | visible |
|---|---|
| Наслідує: | Ні |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.overflowY="scroll" |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 1 | 3.5 | 3 | 9.5 | 12 | 5 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4 | 1 |
Приклади
+ запропонувати свій приклад у пісочниці
Тексту більше, ніж уміщає висота 60px, — overflow-y: hidden зрізає зайве по вертикалі без прокрутки.
HTML
<div>Тексту в цьому блоці навмисно більше, ніж уміщається у фіксовану висоту, тож нижні рядки просто зрізано.</div>
CSS
div {
width: 200px;
height: 60px;
overflow-y: hidden;
border: 1px solid #0172ad;
}
HTML
<p>Цей приклад показує як працює властивість <code>overflow-y</code>. Спробуйте вимкнути/ввімкнути перемикач, щоб змінити метод обобки переповнення контенту по вертикалі в блоці нижче.</p>
<div class="inputs">
<input id="visible" checked name="overflow" type="radio"/>
<label for="visible">visible</label>
<message for="visible">Відображає ввесь вміст елемента, навіть вміст, що за межами елемента по ширині. Без задання.</message>
<input id="hidden" name="overflow" type="radio"/>
<label for="hidden">hidden</label>
<message for="hidden">Відображається лише область всередині елемента, все, що поза межами контейнера буде обрізано.</message>
<input id="scroll" name="overflow" type="radio"/>
<label for="scroll">scroll</label>
<message for="scroll">Смуги прокручування будуть завжди відображені.</message>
<input id="auto" name="overflow" type="radio"/>
<label for="auto">auto</label>
<message for="auto">Смуги прокручування з'являються, тільки при необхідності</message>
</div>
<div class="wm">
<p id="message">Відображає ввесь вміст елемента, навіть вміст, що за межами елемента по ширині. Без задання.</p>
</div>
<hr>
<div id="block">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
CSS
* {
box-sizing: border-box;
padding: 0;
}
body {
font-family: system-ui, sans-serif;
overflow: hidden;
}
#block {
margin-top: 25px;
line-height: 1.45;
width: 400px;
height: 150px;
overflow-y: visible;
background-color: gold;
padding: 4px;
}
message {
display: none;
}
.wm {
min-height: 100px;
}
JS
const message = document.querySelector('#message');
document.querySelectorAll('.inputs input').forEach((el) => el.addEventListener('change', function () {
var messageText = document.querySelector("message[for='" + this.id + "']");
message.textContent = messageText?.textContent ?? '';
document.querySelectorAll('#block').forEach((n) => n.style.setProperty('overflow-y', this.id));
}));
Три однакові блоки висотою 110px: visible випускає текст назовні, hidden обрізає, auto дає прокрутку.
HTML
<div class="row">
<div class="box vis">overflow-y: visible — текст вилазить за рамку й накладається на сусідів унизу</div>
<div class="box hid">overflow-y: hidden — усе, що не вмістилось, просто обрізано без сліду</div>
<div class="box aut">overflow-y: auto — з'явилася смуга прокручування, увесь текст доступний</div>
</div>
CSS
body {
font-family: sans-serif;
font-size: 15px;
line-height: 1.5;
padding: 20px 20px 60px;
}
.row {
display: flex;
gap: 20px;
}
.box {
width: 150px;
height: 110px;
padding: 10px;
border: 1px solid #cfd4d9;
background: #f4f6f8;
}
.vis {
overflow-y: visible;
}
.hid {
overflow-y: hidden;
}
.aut {
overflow-y: auto;
}
Демонстрація роботи властивості
HTML
<div class="info">
<p>За допомогою властивості <code>overflow-y</code> ми можемо вказати, що зробити для переповненого по вертикалі елемента на сторінці.</p>
<p>Ви бачите два ідентичні блоки, але для них задані різні значення для обробки переповнення: <em>hidden</em> й <em>scroll</em> відповідно.</p>
</div>
<div class="wrapper">
<div class="block one">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div class="block two">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</div>
CSS
* {
box-sizing: border-box;
}
body {
font-family: monospace;
font-size: 15px;
line-height: 1.45;
}
.info {
padding: 6px;
}
code {
font-weight: 700;
color: #444;
border-bottom: 2px solid #666;
}
.wrapper {
display: flex;
justify-content: space-around;
}
.block {
width: 150px;
height: 150px;
background-color: gold;
}
.block.one {
overflow-y: hidden;
}
.block.two {
overflow-y: scroll;
}
Приклад використання властивості overflow-y.
HTML
<div class="block block-1">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div class="block block-2">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div class="block block-3">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div class="block block-4">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
CSS
.block {
border: 2px dotted #666;
padding: 12px;
margin-bottom: 26px;
height: 25px;
width: 250px;
}
.block-1 {
overflow-y: auto;
}
.block-2 {
overflow-y: hidden;
}
.block-3 {
overflow-y: scroll;
}
.block-4 {
overflow-y: visible;
}
Коментарі
Коментарів ще немає — будьте першим!