window.addEventListener('load', (event) => { const banner = document.querySelector('.block-home-scroll-banner') if (typeof(banner) == 'undefined' || banner == null) return function setBannerHeight(banner){ if (window.matchMedia('(min-width: 62rem)').matches) { //get element top offset const bannerOffsetTop = banner.offsetTop //set block height banner.style.setProperty('--home-scroll-banner-img-height', `${window.innerHeight-bannerOffsetTop}px`) } } setBannerHeight(banner) function getImagePos(image, scrollPosition){ const imageSpeed = image.getAttribute('data-home-scroll-banner-image-parallax-speed') const imagePos = (scrollPosition * 0.1) * imageSpeed image.style.transform = `translate3d(0,-${imagePos}px,0)` } const parallaxImages = document.querySelectorAll('[data-home-scroll-banner-image]') document.addEventListener('scroll', function(){ const scrollPosition = window.scrollY parallaxImages.forEach(image => { getImagePos(image, scrollPosition) }) }) let observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if(entry.isIntersecting && (entry.target.getBoundingClientRect().top > 0)){ entry.target.classList.add('is-visible') entry.target.style.opacity = entry.intersectionRatio.toFixed(1) } }) }, { threshold: [0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1] }) parallaxImages.forEach(image => { observer.observe(image) }) window.addEventListener('resize', function(){ setBannerHeight(banner) }) })