1/* Klariano â Scroll-Reveal für Headings und Texte. 2 Elemente blenden erst ein, wenn der Nutzer scrollt (wie auf /ueber-uns/). */ 3(function(){ 4 var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)').matches; 5 if(reduce||!('IntersectionObserver' in window))return; 6 var HEADS='.pitch .section__h2,.reviews .section__h2,.faq .section__h2,.section__head .section__h2,.section__h3'; 7 var ITEMS='.pitch__p,.section__sub'; 8 var scrolled=(window.scrollY||window.pageYOffset||0)>4,pending=[]; 9 function onScroll(){if(scrolled)return;scrolled=true;pending.forEach(show);pending=[]; 10 window.removeEventListener('scroll',onScroll);window.removeEventListener('touchmove',onScroll);window.removeEventListener('wheel',onScroll);} 11 window.addEventListener('scroll',onScroll,{passive:true}); 12 window.addEventListener('touchmove',onScroll,{passive:true}); 13 window.addEventListener('wheel',onScroll,{passive:true}); 14 function show(el){ 15 var p=el.parentElement,sibs=p?[].slice.call(p.children).filter(function(n){return n.classList.contains('u-r')||n.classList.contains('u-h')}):[]; 16 var i=Math.max(0,sibs.indexOf(el)); 17 el.style.animationDelay=(Math.min(i,4)*0.09)+'s'; 18 el.classList.add('uin'); 19 } 20 var io=new IntersectionObserver(function(es){ 21 es.forEach(function(e){ 22 if(!e.isIntersecting)return; 23 io.unobserve(e.target); 24 if(scrolled)show(e.target);else pending.push(e.target); 25 }); 26 },{threshold:.18,rootMargin:'0px 0px -8% 0px'}); 27 function skip(el){ 28 return el.closest('.cta')||el.closest('.statement')||el.closest('.cl-show')||el.closest('nav')||el.closest('.footer')||el.hasAttribute('data-revealed'); 29 } 30 function scan(){ 31 [].slice.call(document.querySelectorAll(HEADS)).forEach(function(el){ 32 if(skip(el))return;el.setAttribute('data-revealed','');el.classList.add('u-h');io.observe(el); 33 }); 34 [].slice.call(document.querySelectorAll(ITEMS)).forEach(function(el){ 35 if(skip(el))return;el.setAttribute('data-revealed','');el.classList.add('u-r');io.observe(el); 36 }); 37 } 38 function init(){scan();[300,900,1800].forEach(function(ms){setTimeout(scan,ms)});} 39 if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else init(); 40})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.