用html做一个烟花动画
时间: 2023-07-20 22:22:55 浏览: 101
html5基于canvas实现酷炫的3D烟花动画特效源码.zip
HTML 是一种标记语言,用于创建网页结构和内容。它本身不能制作动画,但可以与 CSS 和 JavaScript 一起使用来创建动态效果。下面是一个用 HTML、CSS 和 JavaScript 制作的烟花动画示例:
HTML 代码:
```
<!DOCTYPE html>
<html>
<head>
<title>烟花动画</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="firework-container"></div>
<script src="script.js"></script>
</body>
</html>
```
CSS 代码:
```
.firework-container {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 500px;
height: 500px;
overflow: hidden;
}
```
JavaScript 代码:
```
var container = document.querySelector('.firework-container');
var colors = ['#00bcd4', '#4caf50', '#ffeb3b', '#ff5722', '#e91e63', '#9c27b0'];
var particles = [];
function createParticle(x, y, color) {
var particle = document.createElement('div');
particle.style.position = 'absolute';
particle.style.width = '10px';
particle.style.height = '10px';
particle.style.borderRadius = '50%';
particle.style.backgroundColor = color;
particle.style.transform = 'translate(' + x + 'px, ' + y + 'px)';
container.appendChild(particle);
particles.push(particle);
}
function explode(x, y) {
for (var i = 0; i < 30; i++) {
var angle = Math.random() * Math.PI * 2;
var speed = Math.random() * 10 + 5;
var color = colors[Math.floor(Math.random() * colors.length)];
var vx = Math.cos(angle) * speed;
var vy = Math.sin(angle) * speed;
createParticle(x, y, color);
particles[i].vx = vx;
particles[i].vy = vy;
}
}
function update() {
for (var i = 0; i < particles.length; i++) {
particles[i].style.transform = 'translate(' + particles[i].vx + 'px, ' + particles[i].vy + 'px)';
particles[i].vx *= 0.95;
particles[i].vy *= 0.95;
if (Math.abs(particles[i].vx) < 0.1 && Math.abs(particles[i].vy) < 0.1) {
container.removeChild(particles[i]);
particles.splice(i, 1);
i--;
}
}
if (particles.length === 0) {
container.removeEventListener('click', handleClick);
}
}
function handleClick(e) {
explode(e.clientX - container.offsetLeft, e.clientY - container.offsetTop);
}
container.addEventListener('click', handleClick);
setInterval(update, 1000 / 60);
```
这个示例展示了一个简单的烟花动画,点击页面中的任何位置都会触发一次烟花爆炸效果。JavaScript 代码使用了一些基本的 DOM 操作和数学计算,CSS 代码用于设置容器的样式。您可以根据自己的需要进行修改和扩展。
阅读全文