TOOLS为非官方社区,欢迎一起建设,答疑群:717421103

版本260427.1

全站通知:

Fireworks

阅读

    

2026-02-18更新

    

最新编辑:

阅读:

  

更新日期:2026-02-18

  

最新编辑:

来自ToolsWIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
WIKI不易猫猫叹气
怒怒醬
Lu_23333
Fireworks
Widget测试中
烟花特效。基于fireworks-js库
作者
WIKI不易猫猫叹气
版本1.01

简介

  • 基于 [fireworks-js](https://fireworks.js.org/) 库实现的烟花特效,支持自定义配置。
    • 注:使用深色背景效果更佳

安装

<includeonly><style type="text/css">
    .fireworks {
        position: fixed;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        pointer-events: none;
        user-select: none;
        z-index: 99999; /* 置于页面背后则改为-1 */
    }
</style>
<script type="text/javascript" src="https://wiki.biligame.com/tools/index.php?title=MediaWiki:Fireworks.js&action=raw&ctype=text/javascript"></script>
<script type="text/javascript">
function shouldShowFireworks() {
    const key = 'fireworks_last_shown';
    const now = Date.now();
    const interval = 4 * 60 * 60 * 1000; // 4小时

    // 读取时优先用 localStorage,回退到 cookie
    let last = null;
    try {
        last = localStorage.getItem(key);
    } catch (e) {}
    if (!last) {
        const match = document.cookie.match(/(?:^|; )fireworks_last_shown=(\d+)/);
        if (match) last = match[1];
    }

    if (last && now - parseInt(last) < interval) return false;

    // 写入时两个都存
    try {
        localStorage.setItem(key, now);
    } catch (e) {}
    const expires = new Date(now + 4 * 24 * 60 * 60 * 1000).toUTCString(); // cookie保留4天
    document.cookie = `fireworks_last_shown=${now}; expires=${expires}; path=/`;

    return true;
}

if (shouldShowFireworks()) {
    var fireworksDiv = document.createElement('div');
    fireworksDiv.className = 'fireworks';
    document.body.appendChild(fireworksDiv);
    const fireworksContainer = document.querySelector('.fireworks');
    const fireworks = new Fireworks.default(fireworksContainer);
    fireworks.start();
    setTimeout(() => {
        fireworks.stop();
        fireworksDiv.remove();
    }, 4 * 1000);
}
</script></includeonly>

使用

对应页面输入

{{#widget:Fireworks}}

扩展应用-更改烟花效果

可前往 https://fireworks.js.org/ 更改参数修改烟花效果

参数说明

核心参数

  • autoresize: 是否自动调整大小 (默认: true)
  • opacity: 画布不透明度,取值范围 0-1 (默认: 1)
  • acceleration: 加速度,值越小上升越慢 (默认: 1.05)
  • friction: 摩擦力,影响粒子运动 (默认: 0.97)
  • gravity: 重力,值越大下落越快 (默认: 1.5)

粒子效果

  • particles: 爆炸后的粒子数量 (默认: 50)
  • traceLength: 烟花上升轨迹长度 (默认: 3)
  • traceSpeed: 轨迹速度,值越小上升越慢 (默认: 10)
  • explosion: 爆炸范围大小 (默认: 5)
  • intensity: 爆炸强度 (默认: 30)
  • flickering: 闪烁程度,值越小越稳定 (默认: 50)
  • lineStyle: 粒子样式,可选 square方形或round圆形 (默认: round)

颜色与亮度

  • hue: 颜色色相范围
    • min: 最小值,0-360 (默认: 0)
    • max: 最大值,0-360 (默认: 360)
  • brightness: 亮度范围
    • min: 最小值,0-100 (默认: 50)
    • max: 最大值,0-100 (默认: 80)

发射与延迟

  • delay: 发射延迟时间
    • min: 最小延迟时间 (默认: 30ms)
    • max: 最大延迟时间 (默认: 60ms)

线条宽度

  • lineWidth.explosion: 爆炸粒子线条
    • min: 最小宽度 (默认: 1)
    • max: 最大宽度 (默认: 3)
  • lineWidth.trace: 上升轨迹线条
    • min: 最小宽度 (默认: 1)
    • max: 最大宽度 (默认: 2)

衰减效果

  • decay: 粒子衰减速度
    • min: 最小衰减速度,值越小效果持续越长 (默认: 0.015)
    • max: 最大衰减速度 (默认: 0.03)

鼠标交互

  • mouse.click: 是否允许点击触发 (默认: false)
  • mouse.move: 是否允许鼠标移动触发 (默认: false)
  • max: 同时允许触发的最大数量 (默认: 3)

声音效果

  • sound.enabled: 是否启用声音 (默认: false)
    • 注:bwiki平台暂不支持

使用示例

你可以根据需要调整这些参数来实现不同的烟花效果。较小的重力值会使烟花下落更慢,较大的粒子数量会使爆炸效果更绚丽,调整色相范围可以限制烟花的颜色等。
  • 使用自定义参数
<script type="text/javascript">
    var fireworksDiv = document.createElement('div');
    fireworksDiv.className = 'fireworks';
    document.body.appendChild(fireworksDiv);
    const container = document.querySelector('.fireworks');
    // 烟花配置
    const fireworks = new Fireworks.default(container, {
        // 核心参数
        autoresize: true,          // 自动调整画布大小
        opacity: 0.3,              // 画布不透明度(官方默认: 1)
        acceleration: 1.01,        // 加速度(官方默认: 1.05)
        friction: 0.85,            // 摩擦力(官方默认: 0.97)
        gravity: 1.5,              // 重力,影响下落速度
        // 粒子效果
        particles: 55,             // 爆炸粒子数量(官方默认: 50)
        traceLength: 3,            // 上升轨迹长度
        traceSpeed: 3,             // 上升速度(官方默认: 10)
        explosion: 1,              // 爆炸范围(官方默认: 5)
        intensity: 55,             // 爆炸强度(官方默认: 30)
        flickering: 25,            // 火花闪烁程度(官方默认: 50)
        lineStyle: 'round',        // 粒子形状:round圆形,square方形
        // 声音效果
        sound: {
            enabled: false        // 是否启用声音效果
        },
        // 颜色
        hue: {
            min: 0,                // 色相最小值(0-360)
            max: 360               // 色相最大值(0-360)
        },
        // 发射与延迟
        delay: {
            min: 100,              // 最小发射延迟(官方默认: 30ms)
            max: 200               // 最大发射延迟(官方默认: 60ms)
        },
        // 发射位置和边界(可选,用于限制烟花范围)
        rocketsPoint: {
            min: 0,               // 发射位置最小X坐标
            max: 100              // 发射位置最大X坐标
        },
        boundaries: {
            x: 0,                 // 边界左上角X坐标
            y: 0,                 // 边界左上角Y坐标
            width: window.innerWidth,   // 边界宽度
            height: window.innerHeight  // 边界高度
        },
        // 线条宽度
        lineWidth: {
            explosion: {
                min: 1,            // 爆炸粒子最小宽度
                max: 2             // 爆炸粒子最大宽度(官方默认: 3)
            },
            trace: {
                min: 0.5,          // 上升轨迹最小宽度(官方默认: 1)
                max: 1             // 上升轨迹最大宽度(官方默认: 2)
            }
        },
        // 亮度
        brightness: {
            min: 60,               // 亮度最小值(官方默认: 50)
            max: 90                // 亮度最大值(官方默认: 80)
        },
        // 衰减效果
        decay: {
            min: 0.010,           // 最小衰减速度(官方默认: 0.015)
            max: 0.015            // 最大衰减速度(官方默认: 0.03)
        },
        // 鼠标交互
        mouse: {
            click: false,          // 是否允许点击触发(官方默认: false)
            move: false,          // 是否允许鼠标移动触发
            max: 1                // 同时触发数量(官方默认: 3)
        }
    });
    fireworks.start();
</script>

其他示例

更新日志

  • v1.01(2026-01-18):增加倒计时后移除烟花特效
  • v1.0(2025-01-27):测试版发布