Intersection Observer API
The Intersection Observer API allows you to detect when an element enters or leaves the viewport. This is exceptionally useful for implementing infinite scroll.
<style>
#load-more-trigger {
height: 1px;
width: 100%;
}
</style>
<div id="content-container">
<!-- Existing content items here -->
</div>
<div id="load-more-trigger"></div>
$(document).ready(function() {
let loading = false; // Prevents multiple requests at once
let observerOptions = {
root: null, // Use the viewport as the root
rootMargin: '0px', // No margin around the root
threshold: 0.1 // Trigger when 10% of the target is visible
};
let observer = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting && !loading) {
loading = true;
loadMoreContent(); // Load more content when the trigger is in view
}
});
}, observerOptions);
// Start observing the trigger element
observer.observe(document.querySelector('#load-more-trigger'));
function loadMoreContent() {
// Simulate an AJAX request to load more content
$.ajax({
url: 'path/to/your/api', // Replace with your content API or server endpoint
method: 'GET',
success: function(data) {
// Append new content to the container
$('#content-container').append(data);
// Reset the loading flag
loading = false;
},
error: function() {
console.log('Error loading more content');
loading = false;
}
});
}
});