// Scroll-reveal animation
function revealOnScroll(selector, visibleClass = 'visible') {
const observer = new IntersectionObserver(
(entries) => entries.forEach((e) => { if (e.isIntersecting) { e.target.classList.add(visibleClass); observer.unobserve(e.target); } }),
{ threshold: 0.15 }
);
document.querySelectorAll(selector).forEach((el) => observer.observe(el));
}
// Lazy-load images
function lazyLoadImages(selector = 'img[data-src]') {
const observer = new IntersectionObserver((entries) => {
entries.forEach((e) => {
if (e.isIntersecting) {
e.target.src = e.target.dataset.src;
observer.unobserve(e.target);
}
});
});
document.querySelectorAll(selector).forEach((img) => observer.observe(img));
}
// Usage
revealOnScroll('.fade-in');
lazyLoadImages();
Create a free account and build your private vault. Share publicly whenever you want.