summaryrefslogtreecommitdiffstats
path: root/assets/js/scroll-reveal.js
blob: ab099c0161cc7670958f0bdde5b001808e36a555 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
 * scroll-reveal.js
 * IntersectionObserver for revealing elements on scroll
 */

export function initScrollReveal() {
  'use strict';

  const revealElements = document.querySelectorAll('.reveal');
  if (!revealElements.length) return;

  const observer = new IntersectionObserver((entries) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        entry.target.classList.add('revealed');
        observer.unobserve(entry.target);
      }
    });
  }, {
    threshold: 0.1,
  });

  revealElements.forEach((el) => {
    observer.observe(el);
  });
}