当前位置:首页 > HTML

h5烟花实现

2026-03-06 13:59:52HTML

H5烟花实现方法

使用HTML5的Canvas结合JavaScript可以轻松实现烟花效果。以下是具体实现步骤:

创建Canvas画布

在HTML中创建一个Canvas元素作为烟花展示区域:

<canvas id="fireworksCanvas"></canvas>

基础样式设置

为Canvas添加基础CSS样式确保全屏显示:

#fireworksCanvas {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
}

JavaScript核心逻辑

实现烟花粒子系统需要以下关键组件:

h5烟花实现

初始化画布

const canvas = document.getElementById('fireworksCanvas');
const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

烟花粒子类

class Particle {
  constructor(x, y, color) {
    this.x = x;
    this.y = y;
    this.color = color;
    this.velocity = {
      x: (Math.random() - 0.5) * 8,
      y: (Math.random() - 0.5) * 8
    };
    this.alpha = 1;
    this.decay = Math.random() * 0.015 + 0.01;
  }

  draw() {
    ctx.save();
    ctx.globalAlpha = this.alpha;
    ctx.fillStyle = this.color;
    ctx.beginPath();
    ctx.arc(this.x, this.y, 2, 0, Math.PI * 2);
    ctx.closePath();
    ctx.fill();
    ctx.restore();
  }

  update() {
    this.velocity.y += 0.05; // 重力效果
    this.x += this.velocity.x;
    this.y += this.velocity.y;
    this.alpha -= this.decay;
  }
}

烟花发射函数

h5烟花实现

function createFirework(x, y) {
  const color = `hsl(${Math.random() * 360}, 100%, 50%)`;
  const particleCount = 150;

  for (let i = 0; i < particleCount; i++) {
    particles.push(new Particle(x, y, color));
  }
}

动画循环

let particles = [];

function animate() {
  requestAnimationFrame(animate);
  ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
  ctx.fillRect(0, 0, canvas.width, canvas.height);

  particles.forEach((particle, index) => {
    particle.update();
    particle.draw();

    if (particle.alpha <= 0) {
      particles.splice(index, 1);
    }
  });
}

animate();

触发烟花效果

通过点击事件或自动触发烟花:

// 点击触发
canvas.addEventListener('click', (e) => {
  createFirework(e.clientX, e.clientY);
});

// 自动发射
setInterval(() => {
  createFirework(
    Math.random() * canvas.width,
    Math.random() * canvas.height * 0.5
  );
}, 1000);

性能优化建议

  • 使用对象池复用粒子对象
  • 限制同时存在的粒子数量
  • 对于移动端减少粒子数量
  • 添加resize事件处理:
    window.addEventListener('resize', () => {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    });

扩展效果

可通过以下方式增强视觉效果:

  • 添加拖尾效果
  • 实现不同形状的烟花爆裂
  • 加入声音效果
  • 使用WebGL实现3D烟花

完整实现示例可在CodePen等平台找到现成案例参考。

标签: 烟花
分享给朋友:

相关文章

vue实现点击烟花

vue实现点击烟花

Vue 实现点击烟花效果 在 Vue 中实现点击烟花效果可以通过结合 CSS 动画和 JavaScript 动态生成元素来实现。以下是具体实现方法: 准备工作 确保项目中已安装 Vue,并创建一个…

js 实现烟花

js 实现烟花

实现烟花效果的 JavaScript 代码 以下是一个使用 Canvas 和 JavaScript 实现烟花效果的完整代码示例。该代码会创建多个烟花粒子,模拟爆炸和下落的效果。 // 获取 Canv…

vue实现烟花

vue实现烟花

Vue实现烟花效果的方法 在Vue中实现烟花效果可以通过Canvas绘制或CSS动画两种方式。以下是具体实现方法: 使用Canvas绘制烟花 在Vue组件中创建Canvas元素并绘制烟花动画: &…

vue实现烟花效果

vue实现烟花效果

使用 Canvas 绘制基础烟花 在 Vue 中创建一个 Canvas 元素,通过 JavaScript 动态绘制烟花效果。初始化 Canvas 并设置其宽高为全屏,监听点击事件触发烟花动画。 &l…