Add New Years
This commit is contained in:
1 parent
2e079dd88e
commit
859bb4aab7
24 files changed
+552
-144
No files matched your search
@@ -0,0 +1,34 @@
|
||||
(() => {
|
||||
const preference = window.matchMedia('(prefers-reduced-motion: reduce)');
|
||||
const weather = document.createElement('div');
|
||||
weather.className = 'ny-weather';
|
||||
weather.setAttribute('aria-hidden', 'true');
|
||||
const fragment = document.createDocumentFragment();
|
||||
for (let i = 0; i < 32; i++) {
|
||||
const flake = document.createElement('span');
|
||||
flake.className = 'ny-flake' + (i % 6 === 0 ? ' ny-spark' : '');
|
||||
flake.textContent = i % 6 === 0 ? '✦' : (i % 4 === 0 ? '❄' : '•');
|
||||
flake.style.cssText = `--x:${(i * 37.7) % 100}%;--size:${i % 4 === 0 ? 14 : 7}px;--duration:${14 + (i % 9)}s;--delay:-${i * 1.9}s`;
|
||||
fragment.append(flake);
|
||||
}
|
||||
weather.append(fragment);
|
||||
const button = document.createElement('button');
|
||||
button.type = 'button'; button.className = 'ny-motion';
|
||||
let paused = preference.matches;
|
||||
try { paused = preference.matches || localStorage.getItem('olapka_winter_paused') === 'true'; } catch (_) {}
|
||||
function render() {
|
||||
document.body.classList.toggle('ny-paused', paused);
|
||||
button.textContent = paused ? '✦ Включить анимацию' : '❄ Остановить анимацию';
|
||||
button.setAttribute('aria-pressed', String(!paused));
|
||||
button.hidden = preference.matches;
|
||||
}
|
||||
button.addEventListener('click', () => {
|
||||
paused = !paused; render();
|
||||
try { localStorage.setItem('olapka_winter_paused', String(paused)); } catch (_) {}
|
||||
});
|
||||
preference.addEventListener('change', () => { paused = preference.matches; render(); });
|
||||
document.addEventListener('visibilitychange', () => {
|
||||
weather.style.display = document.hidden ? 'none' : '';
|
||||
});
|
||||
document.body.append(weather, button); render();
|
||||
})();
|
||||
Reference in new issue
Block a user