diff options
| Commit | 2d0859936833ea72aad40bd7165e96a792ca5a49 (patch) | |
|---|---|---|
| Author | 2025-12-25 17:30:03 +0200 | |
| Committer | 2025-12-25 17:30:03 +0200 | |
| Files | b4485db0411511a091faa6c7e5c275f377adf8f7 /src/scripts | |
| syndamia.com-2d0859936833ea72aad40bd7165e96a792ca5a49.tar syndamia.com-2d0859936833ea72aad40bd7165e96a792ca5a49.tar.gz syndamia.com-2d0859936833ea72aad40bd7165e96a792ca5a49.zip | ||
| Parent | a65372420b04020398e91adc9efb2832e5c3a426 (diff) | |
feat: Add falling snowflake effect (in December and January)
2 files changed, 56 insertions, 0 deletions
| -rw-r--r-- | src/scripts/snow-preload.js | 20 | ||||
| -rw-r--r-- | src/scripts/snow.js | 36 |
diff --git a/src/scripts/snow-preload.js b/src/scripts/snow-preload.js new file mode 100644 index 0000000..de13841 --- /dev/null +++ b/src/scripts/snow-preload.js @@ -0,0 +1,20 @@ +const today = new Date(); + +// Enable snowflakes only in December and January +const enableSnow = today.getMonth() == 11 || today.getMonth() == 0; + +const snowBtn = document.getElementById('snowBtn'); +const snowEnabledLabel = snowBtn.childNodes[0]; +const snowCont = document.createElement('div'); + +if (enableSnow) { + snowBtn.classList.remove('nodisplay'); + + if (localStorage.getItem('snow') === 'off') { + snowCont.classList.add('noSnow'); + snowEnabledLabel.innerText = 'Add'; + } + + snowCont.classList.add('snowContainer'); + document.body.appendChild(snowCont); +} diff --git a/src/scripts/snow.js b/src/scripts/snow.js new file mode 100644 index 0000000..a7eca9a --- /dev/null +++ b/src/scripts/snow.js @@ -0,0 +1,36 @@ +if (enableSnow) { + // Parameters + + const snowflakes = 80; + + // Add snowflakes + + function randInt(min, max) { + return Math.floor(Math.random() * (max - min + 1) ) + min; + } + + for (let snowflakeI = 0; snowflakeI < snowflakes; snowflakeI++) { + const snowflake = document.createElement('div'); + snowflake.classList.add( + 'snowflake', + 'snow-column-' + ((snowflakeI % 20) + 1), + 'snow-start-' + randInt(1, 20), + 'snow-speed-' + randInt(1, 9)); + snowCont.appendChild(snowflake); + } + + // Snowflake button + + snowBtn.onclick = function() { + snowCont.classList.toggle('noSnow'); + + if (localStorage.getItem('snow') !== 'on') { + localStorage.setItem('snow', 'on'); + snowEnabledLabel.innerText = 'Remove'; + } + else { + snowEnabledLabel.innerText = 'Add'; + localStorage.setItem('snow', 'off'); + } + } +} |