MediaWiki:Common.js:修订间差异

来自Fuckrooms Wiki
无编辑摘要
无编辑摘要
第1行: 第1行:


(function() {
(function(){
// 全局雪花容器
window.snowflakes = window.snowflakes || [];
 
// 核心动画引擎
function createSnow(){
    const chars = ['❄','❅','❆','✦'];
      
      
     var style = document.createElement('style');
     function spawn(){
    style.textContent = '.snowflake { position: fixed; color: #fff; z-index: 9999; user-select: none; } @keyframes fall { 0% { transform: translateY(-100vh) rotate(0deg); } 100% { transform: translateY(100vh) rotate(720deg); } }';
        const flake = document.createElement('div');
        flake.style = `position:fixed;top:-30px;color:#fff;z-index:9999;
            pointer-events:none;user-select:none;font-size:${Math.random()*15+10}px;
            left:${Math.random()*100}%;opacity:${Math.random()*0.5+0.5};
            animation:snowFall ${Math.random()*8+5}s linear infinite`;
        flake.textContent = chars[Math.floor(Math.random()*chars.length)];
        document.body.appendChild(flake);
        snowflakes.push(flake);
    }
 
    // 持续生成
    setInterval(spawn, 500);
    setTimeout(() => { setInterval(spawn, 3000) }, 10000);
}
 
// 动态样式注入
if(!document.getElementById('snowStyle')){
    const style = document.createElement('style');
    style.id = 'snowStyle';
    style.textContent = `@keyframes snowFall {
        0%{transform:translateY(-30px) rotate(0deg)}
        100%{transform:translateY(120vh) rotate(720deg)}
    }`;
     document.head.appendChild(style);
     document.head.appendChild(style);
}


   
// 自动恢复机制
     var snowflakes = 35,
document.addEventListener('visibilitychange', () => {
        minSize = 20,
     if(!document.hidden && snowflakes.length < 20) createSnow();
        maxSize = 50,
});
        speed = 10,
        characters = ['❄', '❅', '❆'];


   
// 初始启动
    function createSnow() {
createSnow();
        for(var i = 0; i < snowflakes; i++) {
            var flake = document.createElement('div');
            flake.className = 'snowflake';
            flake.textContent = characters[Math.floor(Math.random() * characters.length)];
           
           
            flake.style.left = Math.random() * 100 + '%';
            flake.style.fontSize = Math.random() * (maxSize - minSize) + minSize + 'px';
            flake.style.animation = 'fall ' + (Math.random() * 5 + speed) + 's linear infinite';
            flake.style.opacity = Math.random() * 0.5 + 0.5;
           
            document.body.appendChild(flake);
           
           
            setInterval(function(f) {
                f.style.transform = 'translateX(' + (Math.random() * 30 - 15) + 'px)';
            }, 2000, flake);
        }
    }
 
   
    window.addEventListener('load', function() {
        createSnow();
        window.addEventListener('resize', function() {
            document.querySelectorAll('.snowflake').forEach(function(f) {
                f.style.left = Math.random() * 100 + '%';
            });
        });
    });
})();
})();

2025年4月14日 (一) 05:42的版本


(function(){
// 全局雪花容器
window.snowflakes = window.snowflakes || [];

// 核心动画引擎
function createSnow(){
    const chars = ['❄','❅','❆','✦'];
    
    function spawn(){
        const flake = document.createElement('div');
        flake.style = `position:fixed;top:-30px;color:#fff;z-index:9999;
            pointer-events:none;user-select:none;font-size:${Math.random()*15+10}px;
            left:${Math.random()*100}%;opacity:${Math.random()*0.5+0.5};
            animation:snowFall ${Math.random()*8+5}s linear infinite`;
        flake.textContent = chars[Math.floor(Math.random()*chars.length)];
        document.body.appendChild(flake);
        snowflakes.push(flake);
    }

    // 持续生成
    setInterval(spawn, 500);
    setTimeout(() => { setInterval(spawn, 3000) }, 10000);
}

// 动态样式注入
if(!document.getElementById('snowStyle')){
    const style = document.createElement('style');
    style.id = 'snowStyle';
    style.textContent = `@keyframes snowFall {
        0%{transform:translateY(-30px) rotate(0deg)}
        100%{transform:translateY(120vh) rotate(720deg)}
    }`;
    document.head.appendChild(style);
}

// 自动恢复机制
document.addEventListener('visibilitychange', () => {
    if(!document.hidden && snowflakes.length < 20) createSnow();
});

// 初始启动
createSnow();
})();