diff options
| author | Jan Palma <honzik@janpalma.cz> | 2026-02-27 17:59:06 +0100 |
|---|---|---|
| committer | Jan Palma <honzik@janpalma.cz> | 2026-02-27 17:59:06 +0100 |
| commit | 1fc25997a7d4b3cf80dbc09a3f48afd031ba5d0e (patch) | |
| tree | 65a4894ed2a6849ab6d18ea0886b74c72035afe1 /assets/js/transitions.js | |
| download | spelis-web-1fc25997a7d4b3cf80dbc09a3f48afd031ba5d0e.tar spelis-web-1fc25997a7d4b3cf80dbc09a3f48afd031ba5d0e.tar.gz spelis-web-1fc25997a7d4b3cf80dbc09a3f48afd031ba5d0e.tar.bz2 spelis-web-1fc25997a7d4b3cf80dbc09a3f48afd031ba5d0e.tar.lz spelis-web-1fc25997a7d4b3cf80dbc09a3f48afd031ba5d0e.tar.xz spelis-web-1fc25997a7d4b3cf80dbc09a3f48afd031ba5d0e.tar.zst spelis-web-1fc25997a7d4b3cf80dbc09a3f48afd031ba5d0e.zip | |
Init
Diffstat (limited to 'assets/js/transitions.js')
| -rw-r--r-- | assets/js/transitions.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/assets/js/transitions.js b/assets/js/transitions.js new file mode 100644 index 0000000..e902a40 --- /dev/null +++ b/assets/js/transitions.js @@ -0,0 +1,53 @@ +const displacement = document.getElementById("displacement"); +const noise = document.getElementById("noise"); + + +var nextFunc = () => {} +function transitionOut(callback) { + document.body.style.filter = "url(#transition)" + const src = new Number(displacement.getAttribute("scale")); + noise.setAttribute("seed",Math.random() * 1000) + if (src < 100) { + displacement.setAttribute("scale", src + 20 + src); + nextFunc = () => transitionOut(callback) + requestAnimationFrame(nextFunc) + } else { + setTimeout(() =>{ + document.body.style.filter = "" + },1000); + callback() + } +} + +function transitionIn() { + document.body.style.filter = "url(#transition)" + const src = new Number(displacement.getAttribute("scale")); + noise.setAttribute("seed",Math.random() * 1000) + if (src > 0) { + displacement.setAttribute("scale", src - 1 - (Math.max(src,1)/4)); + nextFunc = () => transitionIn(); + requestAnimationFrame(nextFunc) + } else { + displacement.setAttribute("scale", 0); + document.body.style.filter = "" + } +} + +if (noise && displacement) { + displacement.setAttribute("scale", 200); + transitionIn() + const links = document.querySelectorAll("a"); + links.forEach(l => { + if (l.href.startsWith(location.origin)) { + l.addEventListener("click", (e)=>{ + e.preventDefault() + displacement.setAttribute("scale", 0); + transitionOut(() => { + location.href = l.href + }); + }) + } + }) +} else { + console.log("Can't do transitions!!") +}
\ No newline at end of file |
