There is a Javascript library for almost anything. But sometimes, it’s good to code your solutions to specific problems where the resulting code will be lighter, and you will feel more rewarded as a result.
When it comes to infinite scrolling in Javascript, many examples, you will find online relate to scrolling the main window (which is a common thing). But what if you have an overflowing DIV that you want to add infinite scrolling on? The logic is the same.
We determine the maximum scroll height by subtracting the clientHeight from the elements scrollHeight. We then obtain the current scrollTop value (distance scrolled from top of the container). Finally, we add the scroll distance and our buffer and determine if it equals the maximum scroll (end of the container) or exceeds it.
const wrapper = document.querySelector('#items'); let scheduledAnimationFrame = false; let bufferValue = 80; function checkScrollPosition() { const maxScroll = wrapper.scrollHeight - wrapper.clientHeight; const currentScrollValue = wrapper.scrollTop; const isElementScrolledToTheBottom = (currentScrollValue + bufferValue) >= maxScroll); if (isElementScrolledToTheBottom) { // Call our data loading function in here } } function onScroll() { if (scheduledAnimationFrame) { return; } scheduledAnimationFrame = true; requestAnimationFrame(() => { checkScrollPosition(); scheduledAnimationFrame = false; }); } wrapper.addEventListener('scroll', onScroll);
Inside of checkScrollPosition
is where you would call any code, such as making requests to a server to load some data. It is also worth noting that you might not even need to use requestAnimationFrame I am using it because of a force of habit, but these days you can implement scrolling solutions like this without using it.