summaryrefslogtreecommitdiffstats
path: root/content/assets/snow.js
blob: 562e9c0ed39799b2f2c65dc8d7b01fd06d635676 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(() => {
    function createSnowFlake() {
        setTimeout(() => createSnowFlake(), 50 / Math.log10(window.innerWidth / 1000 + 1));

        if (document.hidden) {
            return;
        }

        const snowFlake = document.createElementNS("http://www.w3.org/2000/svg", "svg");
        const snowFlakeInner = document.createElementNS("http://www.w3.org/2000/svg", "use");
        const aniDuration = (Math.random() * 3 + 2) * 1000;

        snowFlakeInner.setAttribute("href", "/icons.svg#asterisk");

        snowFlake.classList.add("o-icon", "o-icon--snow");
        snowFlake.setAttribute("aria-hidden", "true");

        snowFlake.style.fontSize = Math.random() * 0.5 + 0.7 + 'em';
        snowFlake.style.left = Math.random() * 100 + '%';
        snowFlake.style.animationDuration = aniDuration + 'ms';
        snowFlake.style.opacity = Math.random();

        setTimeout(() => snowFlake.remove(), aniDuration);

        snowFlake.appendChild(snowFlakeInner);
        document.body.appendChild(snowFlake);
    }

    createSnowFlake();
})();