codepens/bouncing-bunnies-animation-.../src/script.babel

45 lines
1.5 KiB
Plaintext
Raw Permalink Normal View History

2023-10-06 23:12:53 +02:00
// 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()