// Get started! const RANGE = document.querySelector('input') const CONTAINER = document.querySelector('.container') const TITLES = [...document.querySelectorAll('h1')] const BLURBS = [...document.querySelectorAll('p')] const CODES = [...document.querySelectorAll('pre')] // Each config reps delay, duration, stagger, coefficient, offset const STEP_CONFIGS = [ [0, 0.9, 0, 1, 0], [2, 0.9, 0, 1, 0], [-0.5, 0.9, 0, 1, 0], [0, 0.9, 0.15, 1, 0], [0, 0.9, 0.15, 1, -5], [0, 0.9, 0.15, 1, 0], [0, 0.9, 0.15, -1, 0], ] const update = () => { // Show/Hide elements for (let e = 0; e < TITLES.length; e++) { TITLES[e].style.display = BLURBS[e].style.display = CODES[e].style.display = e === parseInt(RANGE.value, 10) ? 'block' : 'none' } // Running the step function const CONFIG = STEP_CONFIGS[parseInt(RANGE.value, 10)] document.documentElement.style.setProperty('--delay', CONFIG[0]) document.documentElement.style.setProperty('--duration', CONFIG[1]) document.documentElement.style.setProperty('--stagger-step', CONFIG[2]) document.documentElement.style.setProperty('--coefficient', CONFIG[3]) document.documentElement.style.setProperty('--offset', CONFIG[4]) if (parseInt(RANGE.value, 10) === 5) { CONTAINER.classList.add('reversed') } else { CONTAINER.classList.remove('reversed') } // Retrigger the animation CONTAINER.hidden = true requestAnimationFrame(() => (CONTAINER.hidden = false)) } RANGE.addEventListener('change', update) // Run the first time to show step 0 👍 update()