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

У CSS3 властивість overflow є скроченим записом для двох інших: overflow-x i overflow-y.
Для того, щоб побачити результат дії overflow, разом з ним для елементу треба прописати також висоту(height або max-height), або задати значення nowrap для white-space.
В стані чорнетки, існують три ключові слова, які можна буде використовувати в якості значень для overflow: no-display, no-content, clip.
Загальний опис
автор: NagarD
- Нотатка
-
Властивість працює лише для блокових елементів із заданою висотою або шириною (властивість
автор: Svitlanaheightабоwidth). - Нотатка
-
JavaScript-властивість
автор: Svitlanaelement.scrollTopможе бути застосоване для елементу, навіть якщо він має встановлене значенняhiddenдляoverflow.
Синтаксис
overflow: visible|hidden|scroll|auto|initial|inherit;
Властивість overflow може отримувати 6 значень:
-
visible -
За замовчуванням. Вміст не обрізається, може відображатися зовні блоку, в якому воно розташоване.
автор: Svitlana -
hidden -
Контет обрізається, без надання прокрутки.
автор: Svitlana -
scroll -
Вміст обрізається і браузер використовує елементи прокрутки, не має значення чи було обрізано вміст чи ні. Це уникає багатьох проблем щодо появи прокручувань і їх зникнення в динамічному середовищі. Принтери можуть друкувати переповнене вміст.
автор: Svitlana -
auto -
Смуги прокручування з'являються, тільки при необхідності
автор: Svitlana -
initial -
Встановлює властивість у значення без задання
автор: Svitlana -
inherit -
Вказує на спадковість властивості від свого батьківського елемента
автор: Svitlana
| Значення без задання: | visible |
|---|---|
| Наслідує: | Ні |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.overflow="scroll" |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 7 | 12 | 4 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 4 | 1 |
Приклади
+ запропонувати свій приклад у пісочниці
Вміст більший за блок 150×150, і overflow: scroll дає смуги прокрутки — нічого не обрізається назавжди.
HTML
<div>Вміст цього блока навмисно більший за його розміри: прокрути, щоб дочитати. Ще трохи тексту, щоб прокрутці точно було що ховати за нижнім краєм блока.</div>
CSS
div {
width: 150px;
height: 150px;
overflow: scroll;
border: 1px solid #ccc;
}
Демонстрація роботи властивості
HTML
<div class="info">
<p>За допомогою властивості <code>overflow</code> ми можемо вказати, що зробити для переповненого елемента на сторінці.</p>
<p>Ви бачите три ідентичні блоки, але для двох останніх задані різні значення для обробки переповнення: <em>hidden</em> й <em>scroll</em> відповідно. Перший блок має значення без задання.</p>
</div>
<div class="wrapper">
<div class="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>
<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: 100px;
background-color: gold;
}
.block.one {
overflow: hidden;
}
.block.two {
overflow: scroll;
}
HTML
<p>Цей приклад показує як працює властивість <code>overflow</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;
}
#block {
margin-top: 25px;
line-height: 1.45;
width: 400px;
height: 150px;
overflow: 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', this.id));
}));
Приклад використання overflow.
HTML
<div class="block block-1">
<p>Це просто текст, не звертай уваги. Це просто дуже довгий текст, який просто є...</p>
</div>
<div class="block block-2">
<p>Це просто текст, не звертай уваги. Це просто дуже довгий текст, який просто є...</p>
</div>
<div class="block block-3">
<p>Це просто текст, не звертай уваги. Це просто дуже довгий текст, який просто є...</p>
</div>
<div class="block block-4">
<p>Це просто текст, не звертай уваги. Це просто дуже довгий текст, який просто є...</p>
</div>
CSS
.block {
border: 2px dotted #666;
padding: 12px;
margin-bottom: 56px;
width: 275px;
/* display: inline-block; */
margin-right: 16px;
height: 25px;
}
.block-1 {
overflow: visible;
}
.block-2 {
overflow: hidden;
}
.block-3 {
overflow: scroll;
}
.block-4 {
overflow: auto;
}
Однакові картки з міткою, що виступає за край. Ліворуч overflow: visible — мітку й підказку видно; праворуч overflow: hidden, доданий заради обрізання довгого тексту, заодно відрізав усе, що стирчить назовні.
HTML
<figure>
<div class="card">
<span class="badge">-30%</span>
<p>Ця картка нічого не ховає.</p>
</div>
<figcaption>overflow: visible</figcaption>
</figure>
<figure>
<div class="card clipped">
<span class="badge">-30%</span>
<p>А ця обрізала мітку разом із текстом.</p>
</div>
<figcaption>overflow: hidden</figcaption>
</figure>
CSS
figure {
display: inline-block;
margin: 24px 30px 0 0;
font: 13px/1.4 sans-serif;
text-align: center;
vertical-align: top;
}
.card {
position: relative;
width: 170px;
height: 74px;
padding: 10px;
border: 2px solid #0172ad;
text-align: left;
}
.clipped {
overflow: hidden;
}
.badge {
position: absolute;
top: -14px;
right: -14px;
padding: 4px 8px;
border-radius: 12px;
background: #b34b4b;
color: #fff;
font-size: 12px;
}
.card p {
margin: 0;
}
Коментарі
Коментарів ще немає — будьте першим!