overflow
Властивість-скорочення CSS overflow
(надлишок) задає бажану поведінку для тих випадків, коли вміст не вміщається у рамку внутрішніх відступів елемента (переливається через край) в горизонтальному чи вертикальному напрямку.
Спробуйте його в дії
Властивості-складові
Ця властивість є скороченням для наступних властивостей CSS:
Синтаксис
/* Значення – ключові слова */
overflow: visible;
overflow: hidden;
overflow: clip;
overflow: scroll;
overflow: auto;
overflow: hidden visible;
/* Глобальні значення */
overflow: inherit;
overflow: initial;
overflow: revert;
overflow: revert-layer;
overflow: unset;
Властивість overflow
задається як одне чи два ключові слова – значення типу <overflow>
. Якщо задано лише одне ключове слово, то overflow-x
та overflow-y
отримують однакове значення. Якщо задано два, то перше з них застосовується до overflow-x
– у горизонтальному напрямку, а друге – до overflow-y
– у вертикальному напрямку.
Значення
visible
(видимий)Вміст, що не вміщається, не обрізається і може бути видимим за межами рамки внутрішніх полів елемента. Рамка елемента не є контейнером прокрутки. Це усталене значення властивості
overflow
.Вміст, що не вміщається, обрізається в межах рамки внутрішніх полів елемента. Смуг прокручення немає, і обрізаний вміст не видимий (тобто є прихованим), але він все одно існує. Користувацькі агенти не додають смуги прокручення, а також не дозволяють користувачам переглядати вміст за межами обрізаної області за допомогою дій, подібних до перетягування на сенсорному екрані або використання колеса миші. Такий вміст може бути прокручений програмно (наприклад, за допомогою якірного посилання, переходу до прихованого елемента шляхом табуляції чи задання значення властивості
scrollLeft
або методуscrollTo()
), і в такому випадку рамка елемента є контейнером прокручення.clip
(обрізати)Вміст, що не вміщається, обрізається в межах краю обрізання надлишку елемента, котрий заданий за допомогою властивості
overflow-clip-margin
. Як наслідок, вміст переповнює рамку внутрішніх полів елемента на значення<length>
властивостіoverflow-clip-margin
, або на0px
, якщо ця властивість не задана. Вміст, що вміщається і лежить поза областю обрізання, не видимий, користувацькі агенти не додають смуги прокручення, а також не підтримується програмне прокручення. Не створюється новий контекст форматування. Для створення контексту форматування використовуйтеoverflow: clip
вкупі зdisplay: flow-root
. Рамка елемента не є контейнером прокручення.scroll
(прокручувати)Вміст, що не вміщається, обрізається в межах рамки внутрішніх полів елемента, але до нього можна докрутити за допомогою смуг прокручення. Користувацькі агенти показують такі смуги незалежно від того, чи переливається вміст через край, тобто і в горизонтальному, і в вертикальному напрямку, якщо це значення застосовується до обох цих напрямків. Таким чином, використання цього ключового слова може запобігти появі та зникненню смуг прокручення при зміні вмісту. Принтери все одно можуть друкувати вміст, що переповнюється. Рамка елемента є контейнером прокручення.
auto
(автоматично)Вміст, що не вміщається, обрізається в межах рамки внутрішніх полів елемента, але до нього можна докрутити за допомогою смуг прокручення. На відміну від
scroll
, користувацькі агенти показують смуги прокручення, лише якщо вміст не вміщається. Якщо вміст вписується в рамку внутрішніх полів елемента, то він виглядає так само, як і з ключовим словомvisible
, але все одно створює новий контекст форматування. Рамка елемента є контейнером прокручення.
[!NOTE] Ключове значення
overlay
є історичним псевдонімомauto
. Зoverlay
смуги прокручення малюються поверх вмісту, замість того, щоб займати простір.
Опис
Серед варіантів роботи з надлишком – його приховування, вмикання смуг прокручення для його перегляду та відображення вмісту, що виливається за край рамки елемента в навколишній простір, а також поєднання цих варіантів.
При використанні для overflow
різних ключових слів слід мати на увазі наступні особливості:
- Задання
overflow
значення, відмінного відvisible
(усталеного) таclip
, утворює новий контекст блокового форматування. Це необхідно з технічних причин; якщо зміщений елемент перетинається з елементом, що прокручується, то він примусово перерозставляє розриви рядків після кожного кроку прокручування, що призводить до повільного прокручування. - Щоб налаштування
overflow
дало бажаний ефект, елемент блокового рівня повинен або мати задану висоту (height
абоmax-height
), якщо переповнення відбувається за вертикаллю, або мати задану ширину (width
абоmax-width
), якщо переповнення відбувається за горизонталлю, заданий блоковий розмір ((block-size
абоmax-block-size
), якщо переповнення відбувається в блоковому напрямку, або заданий рядковий розмір ((inline-size
абоmax-inline-size
) чиwhite-space
зі значеннямnowrap
, якщо переповнення відбувається в рядковому напрямку. - Задання overflow зі значенням
visible
за одним напрямком (тобтоoverflow-x
абоoverflow-y
), коли значення за іншим напрямком не задане якvisible
абоclip
, призводить до того, що значенняvisible
працює якauto
. - Задання overflow зі значенням
clip
за одним напрямком, коли значення за іншим напрямком не задане якvisible
абоclip
, призводить до того, що значенняclip
працює якhidden
. - Властивість JavaScript
Element.scrollTop
може використовуватися для прокручення вмісту в контейнері прокручення, крім випадків, колиoverflow
має значенняclip
.
Формальне визначення
Початкове значення | visible |
---|---|
Успадковується | ні |
Обчислене значення | так як і всі інші властивості зі скорочення:
|
Формальний синтаксис
[ visible | hidden | clip | scroll | auto ]{1,2}
Доступність
Область прокрутного вмісту не може прокручуватись користувачем, в розпорядженні якого є лише клавіатура, окрім користувачів Firefox (котрий усталено дає змогу контейнерові такого змісту отримувати фокус за допомогою клавіатури).
Аби дати змогу користувачам лише клавіатури прокручувати такий контейнер не тільки у Firefox, розробникам слід задавати цьому контейнеру tabindex
, вживши tabindex="0"
. На жаль, коли читач з екрана зустріне таку зупинку табуляції, то не матиме контексту для розуміння, що це таке, і оголосить увесь його вміст. Задання такому контейнерові відповідної ролі WAI-ARIA (role="region"
, наприклад) і доступного імені (за допомогою aria-label
або aria-labelledby
) може пом'якшити цю проблему.
Приклади
Демонстрація результатів різних ключових слів overflow
HTML
<div>
<code>visible</code>
<p class="visible">
Панграма - це фраза, що містить кожну букву алфавіту і є невідомою для
відчайдушно-наївних ґаздинь.
</p>
</div>
<div>
<code>hidden</code>
<p class="hidden">
Панграма - це фраза, що містить кожну букву алфавіту і є невідомою для
відчайдушно-наївних ґаздинь.
</p>
</div>
<div>
<code>clip</code>
<p class="clip">
Панграма - це фраза, що містить кожну букву алфавіту і є невідомою для
відчайдушно-наївних ґаздинь.
</p>
</div>
<div>
<code>scroll</code>
<p class="scroll">
Панграма - це фраза, що містить кожну букву алфавіту і є невідомою для
відчайдушно-наївних ґаздинь.
</p>
</div>
<div>
<code>auto</code>
<p class="auto">
Панграма - це фраза, що містить кожну букву алфавіту і є невідомою для
відчайдушно-наївних ґаздинь.
</p>
</div>
<div>
<code>overlay</code>
<p class="overlay">
Панграма - це фраза, що містить кожну букву алфавіту і є невідомою для
відчайдушно-наївних ґаздинь.
</p>
</div>
CSS
p.visible {
overflow: visible;
}
p.hidden {
overflow: hidden;
}
p.clip {
overflow: clip;
overflow-clip-margin: 1em;
}
p.scroll {
overflow: scroll;
}
p.auto {
overflow: auto;
}
p.overlay {
overflow: overlay;
}
Результат
Специфікації
Сумісність із браузерами
desktop | mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
overflow
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 4 | Opera Full support 7 | Safari Full support 1 | WebView Android Full support 37 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 14 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 |
clip value
|
Chrome Full support 90 | Edge Full support 90 | Firefox Full support 81 | Internet Explorer No support Ні | Opera Full support 76 | Safari Попередній перегляд браузерної підтримки TP | WebView Android Full support 90 | Chrome Android Full support 90 | Firefox for Android Full support 81 | Opera Android No support Ні | Safari on iOS No support Ні | Samsung Internet Full support 15.0 |
Multiple keyword syntax for overflow-x and overflow-y
|
Chrome Full support 68 | Edge Full support 79 | Firefox Full support 61 | Internet Explorer No support Ні | Opera Full support 55 | Safari No support Ні | WebView Android Full support 68 | Chrome Android Full support 68 | Firefox for Android Full support 61 | Opera Android Full support 48 | Safari on iOS No support Ні | Samsung Internet Full support 10.0 |
overlay value
|
Chrome Full support 15 | Edge Full support 79 | Firefox No support Ні | Internet Explorer No support Ні | Opera Full support 15 | Safari No support Ні | WebView Android Full support 100 | Chrome Android Full support 100 | Firefox for Android No support Ні | Opera Android No support Ні | Safari on iOS No support Ні | Samsung Internet Full support 4.0 |
Дивіться також
overflow-x
,overflow-y
overflow-block
,overflow-clip-margin
,overflow-inline
clip
,display
,text-overflow
,white-space
- Переповнення CSS
- Keyboard-only scrolling areas on adrianroselli.com (November 28, 2022)
- Області прокручення лише клавіатурою на adrianroselli.com (28 листопада 2022 року)