JS властивість Element.scrollHeight


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

Властивість scrollHeight є частиною інтерфейсу Element в JavaScript та представляє висоту вмісту елемента, включаючи частину, яка є поза межами видимої області прокрутки. Ця властивість відіграє важливу роль у роботі з прокручуваним вмістом на веб-сторінках, особливо при створенні складних користувацьких інтерфейсів та реалізації функціональності безкінечного скролу.

Значення scrollHeight обчислюється динамічно на основі розмірів вмісту елемента та його дочірніх вузлів. Воно завжди дорівнює або більше за висоту видимої області прокрутки елемента, представленої властивістю clientHeight. Якщо вміст елемента не перевищує видиму область, scrollHeight буде дорівнювати clientHeight.

Розглянемо простий приклад використання scrollHeight:

<div id="container" style="height: 200px; overflow: auto;">
  <p>Цей текст має висоту більшу, ніж видима область прокрутки.</p>
</div>
const container = document.getElementById('container');
console.log(container.scrollHeight); // Виведе висоту вмісту, наприклад, 300
console.log(container.clientHeight); // Виведе висоту видимої області, 200

У цьому прикладі ми маємо контейнер з обмеженою висотою 200 пікселів та вмістом, який перевищує цю висоту. Властивість scrollHeight повертає повну висоту вмісту, яка в даному випадку становить 300 пікселів, тоді як clientHeight повертає висоту видимої області прокрутки, яка дорівнює 200 пікселів.

Властивість scrollHeight часто використовується у поєднанні з іншими властивостями прокрутки, такими як scrollTop та clientHeight, для реалізації функціональності безкінечного скролу або виявлення досягнення кінця вмісту. Наприклад:

const container = document.getElementById('container');
const handleScroll = () => {
  const scrollPosition = container.scrollTop + container.clientHeight;
  if (scrollPosition >= container.scrollHeight) {
    // Користувач досяг кінця вмісту
    loadMoreContent();
  }
};

container.addEventListener('scroll', handleScroll);

У цьому прикладі ми додаємо обробник події scroll до контейнера. Під час прокрутки ми обчислюємо поточну позицію прокрутки (scrollTop + clientHeight) та порівнюємо її з scrollHeight. Якщо ці значення збігаються, це означає, що користувач досяг кінця вмісту, і ми можемо завантажити додатковий вміст, викликавши функцію loadMoreContent().

Властивість scrollHeight також корисна при розробці адаптивних інтерфейсів, коли потрібно динамічно змінювати розміри елементів або їх вміст залежно від розмірів вікна браузера або пристрою. Вона дозволяє точно визначити висоту вмісту елемента, незалежно від його видимості на екрані.

автор: Bond

Порада

Якщо ви використовуєте scrollHeight для визначення розмірів вмісту, переконайтеся, що всі необхідні стилі та зміни вмісту вже застосовані до елемента. Властивість scrollHeight відображає поточний стан вмісту, тому зміни, внесені після її обчислення, не будуть враховані.

автор: Bond
Порада

Якщо ви маєте елемент з фіксованою висотою, але його вміст може змінюватися динамічно, використовуйте scrollHeight для визначення, чи вміст перевищує задану висоту. Це дозволить вам правильно налаштувати область прокрутки або застосувати додаткові стилі.

автор: Bond
Порада

Пам'ятайте, що scrollHeight завжди повертає висоту вмісту, навіть якщо він повністю не відображається на екрані. Це означає, що якщо елемент має overflow: hidden, scrollHeight все одно буде відображати повну висоту вмісту, а не обрізану.

автор: Bond

Синтаксис

Element.scrollHeight

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 21 1 8 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 21 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
- -

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми виводимо значення властивості scrollHeight для елемента <div> з деяким текстом. Це може бути корисним для перевірки, чи елемент має вміст, що виходить за межі видимої області.

HTML

<div id="myDiv" class="scroll-demo">
    <div class="scroll-inner">Прокручуваний вміст</div>
</div>

CSS

.scroll-demo {
    width: 220px;
    height: 110px;
    overflow: auto;
    border: 1px solid #0172ad;
}

.scroll-inner {
    width: 600px;
    height: 400px;
    background: linear-gradient(135deg, #eef6ff, #0172ad);
    padding: 8px;
}

JS

const div = document.getElementById('myDiv');
const height = div.scrollHeight;
console.log(`Висота елемента з урахуванням прокрутки: ${height}px`);
автор: Bond

У цьому прикладі ми використовуємо властивість scrollHeight для елемента document.documentElement (корінь документа), щоб визначити загальну висоту сторінки з урахуванням прокрутки. Ми також отримуємо поточну позицію прокрутки (scrollTop) та висоту видимої області (clientHeight). Коли сума scrollTop та clientHeight досягає scrollHeight, ми викликаємо функцію loadMoreContent(), яка додає новий вміст на сторінку.

HTML

<div id="content" class="scroll-demo">
    <div class="scroll-inner">Прокручуваний вміст</div>
</div>

CSS

.scroll-demo {
    width: 220px;
    height: 110px;
    overflow: auto;
    border: 1px solid #0172ad;
}

.scroll-inner {
    width: 600px;
    height: 400px;
    background: linear-gradient(135deg, #eef6ff, #0172ad);
    padding: 8px;
}

JS

const content = document.getElementById('content');
let currentPage = 1;

function loadMoreContent() {
  // Симулюємо завантаження вмісту з сервера
  const newContent = `<p>Це новий контент зі сторінки ${currentPage}</p>`;
  content.insertAdjacentHTML('beforeend', newContent);
  currentPage++;
}

window.addEventListener('scroll', function() {
  const scrollHeight = document.documentElement.scrollHeight;
  const scrollTop = document.documentElement.scrollTop;
  const clientHeight = document.documentElement.clientHeight;

  if (scrollTop + clientHeight >= scrollHeight) {
    loadMoreContent();
  }
});
автор: Bond

У цьому прикладі ми маємо елемент <div> з ідентифікатором content, який містить великий текст, що не поміщається у видимій області. Ми обмежуємо висоту елемента до 200px і додаємо прокрутку за допомогою CSS-властивості overflow: auto.

автор: Bond

Коментарі

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

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

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

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

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