Files
lena-schilling-website/packages/base/Resources/Public/JavaScript/fade-in.js
Dominik Polakovics 63055bcd65
All checks were successful
Build / build (push) Successful in 4m2s
Build / deploy-stage (push) Successful in 2m48s
Build / switch-stage (push) Successful in 1m57s
feat: add fade in
2024-12-16 15:17:41 +01:00

41 lines
1.3 KiB
JavaScript

(function() {
document.addEventListener('DOMContentLoaded', function() {
// Elements that should fade in when in view
var fadeInElements = document.querySelectorAll('.fade-in-on-scroll');
// If IntersectionObserver is supported, use it for better performance
if ('IntersectionObserver' in window) {
var observer = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
entry.target.classList.add('fade-in-visible');
observer.unobserve(entry.target);
}
});
}, { threshold: 0.1 });
fadeInElements.forEach(function(el) {
el.classList.add('fade-in-hidden');
observer.observe(el);
});
} else {
// Fallback if IntersectionObserver is not supported
fadeInElements.forEach(function(el) {
el.classList.add('fade-in-hidden');
});
var checkVisibility = function() {
var windowBottom = window.innerHeight + window.scrollY;
fadeInElements.forEach(function(el) {
if (el.getBoundingClientRect().top + window.scrollY < windowBottom - (el.offsetHeight * 0.1)) {
el.classList.add('fade-in-visible');
}
});
};
window.addEventListener('scroll', checkVisibility);
checkVisibility();
}
});
})();