<overflow>
Перелічений тип даних <overflow>
представляє значення – ключові слова для розгорнутих властивостей overflow-block
, overflow-inline
, overflow-x
і overflow-y
та властивості-скорочення overflow
. Ці властивості застосовуються до блокових, гнучких і сіткових контейнерів.
Синтаксис
<overflow> = visible | hidden | clip | scroll | auto
Значення
Перелічений тип даних <overflow>
задається за допомогою одного з наведених нижче значень.
visible
Вміст, що не вміщається, не обрізається й може бути видимим поза рамками внутрішніх полів елемента. Рамка елемента не є прокрутним контейнером. Це усталене значення для всіх властивостей, що мають перелічений тип даних
<overflow>
.Вміст, що не вміщається, обрізається в межах рамки внутрішніх меж елемента. Немає смуг прокручення, і обрізаний вміст не є видимим (тобто обрізаний вміст – прихований), але цей вміст все одно існує. Користувацькі агенти не додають смуги прокручення, а також не дозволяють користувачам переглядати вміст поза областю обрізання шляхом дій штибу перетягування на дотиковому екрані чи використання колеса прокручення миші. Вміст можна прокрутити програмно (наприклад, шляхом задання значення властивості
scrollLeft
або методомscrollTo()
). Такий вміст також можна прокрутити за допомогою взаємодії з клавіатурою; стрілки дають змогу прокручувати вміст, а перехід до фокусованого елемента всередині прихованого вмісту дає змогу прокрутити до потрапляння фокусованого елемента в поле зору. Рамка елемента, на якому задано це значення, є прокрутним контейнером.clip
Вміст, що не вміщається, обрізається на краю обрізання переповнення елемента, який заданий за допомогою властивості
overflow-clip-margin
. Як наслідок, вміст переповнює внутрішню рамку елемента на значення<length>
властивостіoverflow-clip-margin
або на0px
, якщо вона не задана. Вміст, що переповнює область обрізання, не є видимим, користувацькі агенти не додають смуг прокручення, і програмне прокручування також не підтримується. Новий контекст форматування не створюється.scroll
Вміст, що не вміщається, обрізається в межах рамки внутрішніх меж елемента, і до цього вмісту можна прокрутити за допомогою смуг прокручення. Користувацькі агенти показують смуги прокручення як у горизонтальному, так і у вертикальному напрямках, якщо задано лише одне значення, незалежно від того, чи є вміст переповненим або обрізаним. Використання цього ключового слова може запобігти появі та зникненню смуг прокручення при зміні вмісту. Принтери можуть все одно надрукувати вміст, що не вмістився. Рамка елемента, на якому задано це значення, є прокрутним контейнером.
auto
Вміст, що не вміщається, обрізається в межах рамки внутрішніх меж елемента, і до цього вмісту можна прокрутити за допомогою смуг прокручення. Користувацькі агенти показують смуги прокручення лише тоді, коли вміст переповнений, і усталено їх приховують. Якщо вміст вміщується в рамку внутрішніх меж елемента, вигляд вмісту такий самий, як і при значенні
visible
, але все одно створюється новий контекст форматування. Рамка елемента, на якому задано це значення, є прокрутним контейнером.
[!NOTE] Значення – ключове слово
overlay
є історичним псевдонімом значенняauto
. При застосуванніoverlay
смуги прокручення наносяться поверх вмісту, а не займають окреме місце.
Приклади
Цей приклад демонструє всі перелічені значення <overflow>
для властивості overflow
.
HTML
HTML у цьому прикладі містить текст пісні в елементі <pre>
. Також в HTML є текстове посилання для тестування впливу фокуса клавіатури на логіку переповнення та прокручення. Той самий код HTML повторюється кілька разів, щоб показати вплив кожного переліченого значення <overflow>
.
<pre>
Вийди, вийди, сонечко,
На дідове полечко,
На бабине зіллячко,
На наше подвір'ячко.
На бабине зіллячко,
На наше подвір'ячко,
На весняні квіточки,
На маленькі діточки.
Там вони граються,
Тебе дожидаються.
Там вони граються,
Тебе дожидаються.
<a href="#">Вийди, вийди, сонечко</a>,
На дідове полечко,
Там побачих п'ять овечок
І баранчика між ними
Із ріжками золотими,
Із ріжками золотими.
</pre>
CSS
Для потреб демонстрації розмір рамки елемента <pre>
чітко визначений, щоб забезпечити переповнення вмісту контейнера як у рядковому, так і блоковому напрямках. Для кожного з повторюваних елементів <pre>
задано різне значення <overflow>
. Для демонстрації значення clip
було додано визначення overflow-clip-margin
.
pre {
block-size: 100px;
inline-size: 295px;
}
pre:nth-of-type(1) {
overflow: hidden;
}
pre:nth-of-type(1)::before {
content: "hidden: ";
}
pre:nth-of-type(2) {
overflow: clip;
overflow-clip-margin: 1em;
}
pre:nth-of-type(2)::before {
content: "clip: ";
}
pre:nth-of-type(3) {
overflow: scroll;
}
pre:nth-of-type(3)::before {
content: "scroll: ";
}
pre:nth-of-type(4) {
overflow: auto;
}
pre:nth-of-type(4)::before {
content: "auto: ";
}
pre:nth-of-type(5) {
overflow: clip;
overflow: overlay;
overflow-clip-margin: 3em;
}
pre:nth-of-type(5)::before {
content: "overlay (або clip, якщо overlay не підтримується): ";
}
pre:nth-of-type(6) {
overflow: visible;
}
pre:nth-of-type(6)::before {
content: "visible: ";
}
Результат
Щоб побачити дію клавіатурного фокуса на логіку переповнення та прокручування, спробуйте перейти по всіх посиланнях у прикладі за допомогою табулювання. Зверніть увагу, що рамка clip
не створює прокрутний контейнер, і посилання не потрапляє в поле зору при фокусуванні на ньому. Значення visible
, яке завжди показує посилання, також не є прокрутним контейнером.
Специфікації
Сумісність із браузерами
Дивіться також
- Властивості, що використовують цей тип даних:
overflow-x
,overflow-y
,overflow-inline
,overflow-block
іoverflow
- Модуль Переповнення CSS