html圣诞烟花特效代码
时间: 2023-12-25 07:04:41 浏览: 100
以下是一个使用HTML和JavaScript编写的圣诞烟花特效代码的示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>圣诞烟花特效</title>
<style>
canvas {
background-color: black;
}
</style>
</head>
<body>
<canvas id="fireworksCanvas"></canvas>
<script>
// 创建画布
var canvas = document.getElementById("fireworksCanvas");
var ctx = canvas.getContext("2d");
// 设置画布大小
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// 存储烟花粒子
var particles = [];
// 创建烟花粒子对象
function Particle(x, y) {
this.x = x;
this.y = y;
this.size = Math.random() * 3 + 1;
this.speedX = Math.random() * 3 - 1.5;
this.speedY = Math.random() * 3 - 1.5;
this.color = "hsl(" + Math.random() * 360 + ", 100%, 50%)";
}
// 更新粒子位置和大小
Particle.prototype.update = function () {
this.x += this.speedX;
this.y += this.speedY;
this.size -= 0.1;
}
// 绘制粒子
Particle.prototype.draw = function () {
ctx.fillStyle = this.color;
ctx.beginPath();
ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
ctx.fill();
}
// 创建烟花
function createFirework() {
var x = Math.random() * canvas.width;
var y = canvas.height;
var firework = new Particle(x, y);
particles.push(firework);
}
// 更新画布
function update() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i < particles.length; i++) {
particles[i].update();
particles[i].draw();
// 移除已经消失的粒子
if (particles[i].size <= 0) {
particles.splice(i, 1);
i--;
}
}
requestAnimationFrame(update);
}
// 监听鼠标点击事件
canvas.addEventListener("click", function (event) {
var mouseX = event.clientX;
var mouseY = event.clientY;
for (var i = 0; i < 30; i++) {
createFirework();
}
});
// 开始动画
update();
</script>
</body>
</html>
```
这段代码使用HTML的`<canvas>`元素和JavaScript来创建一个动态的圣诞烟花特效。当鼠标点击页面时,会产生一连串的烟花效果。每个烟花由多个粒子组成,粒子的位置、大小和颜色都是随机生成的。通过不断更新粒子的位置和大小,实现了烟花的动画效果。
阅读全文