JSFiddle - React, Tailwind, and code Playground
by Mike Jacobson
HTML
<div class="container">
<div>Item 01</div>
<div>Item 02</div>
<div>Item 03</div>
<div>Item 04</div>
<div>Item 05</div>
<div>Item 06</div>
<div>Item 07</div>
<div>Item 08</div>
<div>Item 09</div>
<div>Item 10</div>
<div>Item 11</div>
<div>Item 12</div>
<div>Item 13</div>
<div>Item 14</div>
<div>Item 15</div>
</div>
CSS
div {
border-bottom: 1px solid #ddd;
height: 40px;
padding: 10px;
width: 100%;
}
.container {
border: 1px solid #ddd;
height: 200px;
overflow: auto;
width: 500px;
}
JavaScript
const options = {
root: document.querySelector('.container'),
rootMargin: '190px',
threshold: 1.0
}
const container = document.querySelector('.container');
const containerHTML = container.innerHTML;
const elements = document.querySelectorAll('.container > div');
const observer = new IntersectionObserver(callback, options);
const target = document.querySelector('.container > div:last-child');
observer.observe(target);
function callback(entries, observer) {
const entry = entries[0];
if (entry.isIntersecting) {
container.innerHTML += containerHTML;
//container.appendChild(containerHTML);
}
}