Skip to content
最后更新:1 个月前

🚀 随机emoji动画

摸鱼终结者:让你的网页“动”起来

给大家整点好玩的。折腾代码时搞了一个“Emoji 互动动画”:

  1. 平时:屏幕上会随机飘落五彩斑斓的小表情。
  2. 惊喜:如果你盯着网页看 10 秒钟不动(摸鱼检测),屏幕会瞬间蹦出一个超级大的 Emoji 占满全屏!
  3. 使用:新建emoji.js,引入即可

💡

效果参考本页

点我查看代码
javascript
(function() {
    // 1. 动态注入 CSS 样式
    const style = document.createElement('style');
    style.innerHTML = `
        .js-emoji-particle {
            position: fixed;
            pointer-events: none;
            user-select: none;
            z-index: 10000;
            animation: emojiFadeUp 2s ease-out forwards;
        }

        #js-big-emoji-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100vw;
            height: 100vh;
            display: none;
            justify-content: center;
            align-items: center;
            font-size: 60vw;
            background: rgba(255, 255, 255, 0.1);
            backdrop-filter: blur(5px); /* 增加一点模糊感 */
            z-index: 20000;
            cursor: pointer;
            user-select: none;
        }

        @keyframes emojiFadeUp {
            0% { transform: translateY(0) scale(0.5); opacity: 0; }
            20% { opacity: 1; }
            100% { transform: translateY(-120px) scale(1.8); opacity: 0; }
        }
    `;
    document.head.appendChild(style);

    // 2. Emoji 资源库(手势 + 表情)
    function getRandomEmoji() {
        const ranges = [
            [0x1F600, 0x1F64F], // 表情 (Smiling faces, etc.)
            [0x1F910, 0x1F930], // 手势与新表情 (Thinking, hugging, etc.)
            [0x270A, 0x270D],   // 经典手势 (Fist, victory, etc.)
            [0x1F590, 0x1F596], // 更多手势
            [0x1F446, 0x1F450]  // 指向手势
        ];
        const range = ranges[Math.floor(Math.random() * ranges.length)];
        const codePoint = Math.floor(Math.random() * (range[1] - range[0] + 1)) + range[0];
        return String.fromCodePoint(codePoint);
    }

    // 3. 创建飘落的小 Emoji
    function spawnEmoji() {
        const el = document.createElement('div');
        el.className = 'js-emoji-particle';
        el.innerText = getRandomEmoji();
        el.style.left = Math.random() * 95 + 'vw';
        el.style.top = Math.random() * 95 + 'vh';
        el.style.fontSize = (Math.random() * 24 + 16) + 'px';
        document.body.appendChild(el);
        setTimeout(() => el.remove(), 2000);
    }

    // 持续生成
    setInterval(spawnEmoji, 400);

    // 4. 全屏大 Emoji 逻辑
    const overlay = document.createElement('div');
    overlay.id = 'js-big-emoji-overlay';
    document.body.appendChild(overlay);

    let idleTimer;
    const IDLE_THRESHOLD = 10000; // 10秒不动触发

    function showBigEmoji() {
        overlay.innerText = getRandomEmoji();
        overlay.style.display = 'flex';
    }

    function resetTimer() {
        if (overlay.style.display === 'flex') {
            overlay.style.display = 'none';
        }
        clearTimeout(idleTimer);
        idleTimer = setTimeout(showBigEmoji, IDLE_THRESHOLD);
    }

    // 监听交互:点击、移动、滚轮、按键
    ['mousedown', 'mousemove', 'keydown', 'scroll', 'touchstart'].forEach(type => {
        window.addEventListener(type, resetTimer, { passive: true });
    });

    // 初始化
    resetTimer();
})();
播放器
cover
Stars - Janis Ian
00:00🔊 00:00
1
🤖助理
江大爷的助理在线
助理
我是江大爷的助理,有事您吩咐。