1gsap.registerPlugin(ScrollTrigger); 2 3document.addEventListener("DOMContentLoaded", function () { 4 // next1 animation 5 gsap.utils.toArray("[data-animation='fadeInTop']").forEach((section) => { 6 const elems = section.querySelectorAll("[data-animation='fadeTop']"); 7 8 // Initial state 9 gsap.set(elems, { 10 y: 100, 11 opacity: 0, 12 }); 13 14 // ScrollTrigger animation 15 ScrollTrigger.create({ 16 trigger: section, 17 start: "top 50%", 18 toggleActions: "play none none reverse", 19 onEnter: () => { 20 gsap.to(elems, { 21 y: 0, 22 opacity: 1, 23 duration: 2, 24 ease: "power3.out", 25 stagger: 0.2, 26 }); 27 }, 28 }); 29 }); 30 31 // next2 animation 32 gsap.utils.toArray(".js-website-section").forEach((section) => { 33 const elems = section.querySelectorAll(".js-content-opacity"); 34 // Set starting params for sections 35 gsap.set(elems, { 36 y: 100, 37 opacity: 0, 38 duration: 2, 39 ease: "power3.out", 40 overwrite: "auto", 41 }); 42 43 ScrollTrigger.create({ 44 trigger: section, 45 start: "top 50%", 46 end: "bottom 30%", 47 onEnter: () => 48 gsap.to(elems, { 49 y: 0, 50 opacity: 1, 51 stagger: 0.2, 52 }), 53 }); 54 }); 55 // next3 animation for images 56 gsap.utils.toArray("[data-animation='fadeInImgs']").forEach((section) => { 57 const elems = section.querySelectorAll("[data-animation='fadeInImg']"); 58 59 // Initial state 60 gsap.set(elems, { 61 opacity: 0, 62 }); 63 64 // ScrollTrigger animation 65 ScrollTrigger.create({ 66 trigger: section, 67 start: "top 100%", 68 toggleActions: "play none none reverse", 69 onEnter: () => { 70 gsap.to(elems, { 71 opacity: 1, 72 duration: 4, 73 ease: "power3.out", 74 stagger: 0.2, 75 }); 76 }, 77 }); 78 }); 79});
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.