let addCoverage = document.getElementById('add-coverage'), addCoverageShadow = document.getElementById('add-coverage-shadow'), acToggle = document.getElementById('ac-toggle'), acToggleBg = document.getElementById('ac-toggle-bg'), acVerticalLine = document.getElementById('ac-vertical-line'), poweredBy = document.getElementById('powered-by'), poweredByShadow = document.getElementById('powered-by-shadow'), poweredByLetters = document.querySelectorAll('.powered-by-letters'), acJSONborder = document.getElementById('ac-json-border'), acJSON = document.querySelectorAll('#ac-json tspan'), rentalCoverage = document.getElementById('rental-coverage'), rentalShadow = document.getElementById('rental-shadow'); let acAnim = gsap.timeline({ id:"Add Coverage Animation", repeat: -1, repeatDelay: 3, delay: 3 }) .from(addCoverage, 0.6, { x: 60, opacity: 0, transformOrigin: "right center", ease: "power2.inOut" }) .fromTo(acToggle, 0.6, { x: 2.871, y: 1.321 }, { x: 22.871, y: 1.321 }) .from(acToggleBg, 0.3, { fill: '#929EA2' }, "-=0.6") .from(addCoverageShadow, 1, { opacity: 0 }, "-=0.3") .fromTo(acVerticalLine, 1, { drawSVG: "0%" }, { drawSVG: "100%" }, "-=0.5") .from(rentalCoverage, 1, { x: "+=30", opacity: 0, ease: "power2.inOut" }, "-=1") .from(poweredBy, 1, { y: "+=30" }, "-=1") .from(poweredByShadow, 1, { opacity: 0 }, "-=1") .from(poweredByLetters, 1, { opacity: 0 }, "-=0.6") .fromTo(acJSONborder, 1, { drawSVG: "65% 65%" }, { drawSVG: "0% 100%" }, "-=0.5") .from(acJSON, 0.5, { opacity: 0, stagger: 0.05 }, "-=0.5"); ScrollTrigger.create({ trigger: addCoverage, start: "top bottom", end: "bottom top", onEnter: function(){ acAnim.play(); }, onEnterBack: function(){ acAnim.play(); }, onLeave: function(){ acAnim.pause(); }, onLeaveBack: function(){ acAnim.pause(); } });
let claimStatus = document.getElementById('claim-status'), csCategories = document.querySelectorAll('.cs-category'), csCatTitles = document.querySelectorAll('.cs-category text'), csCatShadows = document.querySelectorAll('.cs-cat-shadow'), csSpeechBubbles = document.querySelectorAll('.cs-speech-bubble'), csSpeechLines = document.querySelectorAll('.cs-speech-bubble line'), csSpeechSuccess = document.querySelectorAll('.cs-speech-success'), csProgress = document.getElementById('cs-progress'), csLineOne = document.getElementById('cs-line-1'), csLineTwo = document.getElementById('cs-line-2'), csDotOne = document.getElementById('cs-dot-1'), csDotTwo = document.getElementById('cs-dot-2'), csDotThree = document.getElementById('cs-dot-3'), csLongLine = document.getElementById('cs-long-line'), underWritingLine = document.getElementById('underwriting-line'), underWritingBadge = document.querySelectorAll('.underwriting-shield'), trovLineOne = document.getElementById('trov-o-line-one'), trovLogo = document.getElementById('trov-o-logo'), trovLineTwo = document.getElementById('trov-o-line-two'), devBorder = document.getElementById('dev-border'), devGroups = document.querySelectorAll('.dev-group'), dashOne = document.getElementById('dashboard-one'), dashTwo = document.getElementById('dashboard-two'), dashThree = document.getElementById('dashboard-three'), priceOne = document.getElementById('price-one'), priceTwo = document.getElementById('price-two'), priceThree = document.getElementById('price-three'); gsap.set([dashTwo, dashThree, priceTwo, priceThree], { opacity: 0 }); let dashboardAnim = gsap.timeline({ id: "Dashboard Animation", repeat: -1 }) .fromTo(dashOne, 0.6, { x: 0, opacity: 1 }, { x: -30, opacity: 0, immediateRender: false, ease: "power2.inOut" }, "+=6") .fromTo(priceOne, 0.6, { y: 0, opacity: 1 }, { y: 30, opacity: 0, immediateRender: false, ease: "power2.inOut" }) .fromTo(dashTwo, 0.6, { x: 30, opacity: 0 }, { x: 0, opacity: 1, immediateRender: false, ease: "power2.inOut" }) .fromTo(priceTwo, 0.6, { y: 30, opacity: 0 }, { y: 0, opacity: 1, immediateRender: false, ease: "power2.inOut" }, "-=0.6") .fromTo(dashTwo, 0.6, { x: 0, opacity: 1 }, { x: -30, opacity: 0, immediateRender: false, ease: "power2.inOut" }, "+=6") .fromTo(priceTwo, 0.6, { y: 0, opacity: 1 }, { y: 30, opacity: 0, immediateRender: false, ease: "power2.inOut" }, "-=0.6") .fromTo(dashThree, 0.6, { x: 30, opacity: 0 }, { x: 0, opacity: 1, immediateRender: false, ease: "power2.inOut" }) .fromTo(priceThree, 0.6, { y: 30, opacity: 0 }, { y: 0, opacity: 1, immediateRender: false, ease: "power2.inOut" }, "-=0.6") .fromTo(dashThree, 0.6, { x: 0, opacity: 1 }, { x: -30, opacity: 0, immediateRender: false, ease: "power2.inOut" }, "+=6") .fromTo(priceThree, 0.6, { y: 0, opacity: 1 }, { y: 30, opacity: 0, immediateRender: false, ease: "power2.inOut" }, "-=0.6") .fromTo(dashOne, 0.6, { x: 30, opacity: 0 }, { x: 0, opacity: 1, immediateRender: false, ease: "power2.inOut" }) .fromTo(priceOne, 0.6, { y: 30, opacity: 0 }, { y: 0, opacity: 1, immediateRender: false, ease: "power2.inOut" }, "-=0.6"); let claimStatusAnim = gsap.timeline({ id:"Claim Status Animation", repeat: -1, repeatDelay: 4 }) .from(claimStatus, 1, { opacity: 0, x: "+=30" }) .to(csProgress, 1, { width: 85 }) .to(csDotOne, 0.5, { fill: "#0198FF" }, "-=1") .to(csDotTwo, 0.5, { fill: "#0198FF" }, "-=0.5") .fromTo(csLineOne, 1, { drawSVG: "0%" }, { drawSVG: "100%" }, "-=1") .fromTo(underWritingLine, 1, { drawSVG: "100% 100%" }, { drawSVG: "0% 100%" }, "-=0.5") .from(underWritingBadge, 1, { opacity: 0, y: "+=30" }, "-=0.5") .fromTo(trovLineOne, 0.5, { drawSVG: "100% 100%" }, { drawSVG: "0% 100%" }) .fromTo(trovLogo, 0.5, { opacity: 0, x: "+=30" }, { opacity: 1, x: 0 }) .fromTo(trovLineTwo, 0.5, { drawSVG: "100% 100%" }, { drawSVG: "100% 0%" }) .fromTo(csLongLine, 2, { drawSVG: "100% 100%" }, { drawSVG: "0% 100%", ease: "none" }, "-=2") .fromTo(devBorder, 1, { drawSVG: "60% 60%" }, { drawSVG: "0% 100%" }, "-=0.25") .from(devGroups, 0.5, { opacity: 0, stagger: 0.1 }) .to(csProgress, 1, { width: 170 }, "+=3") .fromTo(csLineTwo, 1, { drawSVG: "0%" }, { drawSVG: "100%" }, "-=1") .to(csDotThree, 0.5, { fill: "#0198FF" }, "-=0.5") .from(csSpeechBubbles, 0.5, { opacity: 0, y: "+=30", stagger: 1, ease: "power2.inOut" }) .from(csSpeechLines, 0.5, { scaleX: 0, transformOrigin: "left center", stagger: 0.5 }, "-=1") .from(csSpeechSuccess, 1, { opacity: 0, y: "+=30", stagger: 0.2 }) .to(csProgress, 1, { width: 255 }, "-=1"); ScrollTrigger.create({ trigger: claimStatus, start: "top bottom", end: "bottom top", onEnter: function(){ claimStatusAnim.play(); }, onEnterBack: function(){ claimStatusAnim.play(); }, onLeave: function(){ claimStatusAnim.pause(); }, onLeaveBack: function(){ claimStatusAnim.pause(); } });
let globe = document.getElementById('globe'), bloops = globe.querySelectorAll('.bloop'), poi = globe.querySelectorAll('.poi'), poiEcho = globe.querySelectorAll('.poi-echo path'), gradient = document.getElementById('bloop-gradient'); let globeAnim = gsap.timeline({ repeat: -1, repeatDelay: 0 }) .to(gradient, 10, { attr: { gradientTransform: "rotate(360)"}}); let poiAnim = gsap.timeline({ id:"Globe Animation", repeat: -1, repeatDelay: 0 }) .fromTo(poi, 1, { fill: "#0198FF", scale: 1 }, { fill: "#fff", scale: 1.25, transformOrigin: "center center", stagger: 2 }) .fromTo(poiEcho, 2.5, { scale: 0.5, transformOrigin: "center center", opacity: 1 }, { scale: 30, transformOrigin: "center center", stagger: 0.5, opacity: 0 }, "-=4") .fromTo(poi, 1, { fill: "#fff", scale: 1.25 }, { fill: "#0198FF", scale: 1, transformOrigin: "center center" }); ScrollTrigger.create({ trigger: globe, start: "top bottom", end: "bottom top", onEnter: function(){ globeAnim.play(); poiAnim.play(); }, onEnterBack: function(){ globeAnim.play(); poiAnim.play(); }, onLeave: function(){ globeAnim.pause(); poiAnim.pause(); }, onLeaveBack: function(){ globeAnim.pause(); poiAnim.pause(); } });
let claimStatus = document.getElementById('claim-status'), csCategories = document.querySelectorAll('.cs-category'), csCatTitles = document.querySelectorAll('.cs-category text'), csCatShadows = document.querySelectorAll('.cs-cat-shadow'), csSpeechBubbles = document.querySelectorAll('.cs-speech-bubble'), csSpeechLines = document.querySelectorAll('.cs-speech-bubble line'), csSpeechSuccess = document.querySelectorAll('.cs-speech-success'), csProgress = document.getElementById('cs-progress'), csLineOne = document.getElementById('cs-line-1'), csLineTwo = document.getElementById('cs-line-2'), csDotOne = document.getElementById('cs-dot-1'), csDotTwo = document.getElementById('cs-dot-2'), csDotThree = document.getElementById('cs-dot-3'), underWritingLine = document.getElementById('underwriting-line'), underWritingText = document.getElementById('underwriting-text'), underWritingBadge = document.getElementById('underwriting-badge'); let claimStatusCats = gsap.timeline({ repeat: -1, repeatDelay: 4 }) .from(csCatTitles, 1, { opacity: 0, stagger: 4, ease: "power2.inOut" }) .from(csCatShadows, 1, { opacity: 0, stagger: 4, ease: "power2.inOut" }, "-=29") .to(csCatTitles, 1, { opacity: 0, stagger: 4 }, "-=25") .to(csCatShadows, 1, { opacity: 0, stagger: 4 }, "-=29"); let claimStatusAnim = gsap.timeline({ repeat: -1, repeatDelay: 4 }) .from(claimStatus, 1, { opacity: 0, x: "+=30" }) .to(csProgress, 1, { width: 85 }) .fromTo(csLineOne, 1, { drawSVG: "0%" }, { drawSVG: "100%" }, "-=1") .fromTo(underWritingLine, 1, { drawSVG: "100% 100%" }, { drawSVG: "100%" }, "-=0.5") .from(underWritingBadge, 1, { opacity: 0, y: "+=30" }, "-=0.5") .from(underWritingText, 1, { opacity: 0, x: "+=30" }, "-=1") .to(csDotTwo, 0.5, { fill: "#0198FF" }, "-=0.5") .to(csProgress, 1, { width: 170 }, "+=1") .fromTo(csLineTwo, 1, { drawSVG: "0%" }, { drawSVG: "100%" }, "-=1") .to(csDotThree, 0.5, { fill: "#0198FF" }, "-=0.5") .from(csSpeechBubbles, 0.5, { opacity: 0, y: "+=30", stagger: 0.5, ease: "power2.inOut" }) .from(csSpeechLines, 0.5, { scaleX: 0, transformOrigin: "left center", stagger: 0.5 }) .from(csSpeechSuccess, 1, { opacity: 0, y: "+=30" }) .to(csProgress, 1, { width: 255 }, "-=1");