//svg name space const ns = "http://www.w3.org/2000/svg" //Create new svg group and place in the dom for copies const svg = document.getElementsByTagName('svg')[0] const copyGroup = document.createElementNS(ns,'g') copyGroup.setAttribute('id','copy'); svg.appendChild(copyGroup) const header = document.querySelector('header'); const header_height = getComputedStyle(header).height.split('px')[0]; console.log(header_height); function changeArrow(direction){ const arrow = document.querySelector('.scroll-direction'); console.log(arrow) arrow.setAttribute('data-direction', direction) } function changeDirection(){ if(window.pageYOffset > header_height){ changeArrow("↑") } if(window.pageYOffset < header_height){ changeArrow("↓") } } console.log(window.pageYOffset) // Array helper for leafPicker function. 'collection' key matches svg data attribute, 'leafs' key creates a const leafPickers = [ {leafs:"orangeLeafs", collection: "Orange"}, {leafs:"purpleLeafs", collection:"Purple"}, {leafs:"redLeafs", collection: "Red"}, {leafs:"pinkLeafs", collection:"Pink"}, {leafs:"blueLeafs", collection:"blue"}, {leafs:"greenLeafs", collection:"green"} ] // Function to copy leafs to a groupd tag in the dom let leafCopy = []; function leafPicker(collection){ const leafs = document.querySelectorAll(`[data-name="${collection}"]`) for(const leaf of leafs){ leafCopy.push(leaf.cloneNode(true)) } } for(const leafs of leafPickers){ leafPicker(leafs.collection) } console.log(leafCopy) function makeCopies(){ for(const copies of leafCopy){ copyGroup.appendChild(copies) const leafCopies = Array.from(document.getElementById('copy').querySelectorAll('[data-name]')) for(const [index, leafCopy] of leafCopies.entries()){ leafCopy.setAttribute('id' , `copy-${index}`) } } } makeCopies() const leafCopies = Array.from(document.getElementById('copy').querySelectorAll('[data-name]')) let spring = {}, summer = {}, autumn = {}; function shuffle(array) { var counter = array.length, temp, index; // While there are elements in the array while (counter--) { // Pick a random index index = (Math.random() * counter) | 0; // And swap the last element with it temp = array[counter]; array[counter] = array[index]; array[index] = temp; } return array; } spring = shuffle(leafCopies); spring.length = 20; // get 4 random elements summer = shuffle(leafCopies); summer.length = 40; function debounce(func, wait = 20, immediate = true) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; } // function checkSlide(){ // changeDirection() // console.log(window.scrollY) // } changeDirection() const summerFall = anime({ targets : summer, easing: 'easeInOutQuint', opacity : 0, translateY: 200, duration: function(el,i,l){ return 2500 + (i * 100) }, autoplay : false }) function playAnimation(){ if (window.pageYOffset < 10) { summerFall.play() summerFall.restart() }; }; document.addEventListener("touchmove", ScrollStart, false); document.addEventListener("scroll", Scroll, false); function ScrollStart() { debounce(playAnimation,10) } function Scroll() { //end of scroll event for iOS //and debounce(playAnimation,10) //start/end of scroll event for other browsers } window.addEventListener('scroll' , debounce(playAnimation,10))