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.

автор: Svitlana

Загальний опис

автор: 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"

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 3.5 3 9.5 12 5
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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;
}
автор: Svitlana

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));

}));
автор: Svitlana

Три однакові блоки висотою 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;
}
автор: NagarD

Демонстрація роботи властивості

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;
}
автор: Svitlana

Приклад використання властивості 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;
}
автор: Svitlana

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід