html css js跨年烟花
时间: 2024-12-31 22:46:48 浏览: 9
### 使用HTML、CSS和JavaScript实现跨年烟花效果
为了创建一个具有自动升起并绽放最后自由落体效果的烟花动画,可以采用如下方法:
#### HTML结构
定义基本文档结构以及引入必要的样式表与脚本文件。
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>2023 New Year Fireworks</title>
<link rel="stylesheet" href="styles.css">
<style>
/* 内联样式 */
body {
background-color: black;
overflow: hidden;
}
</style>
</head>
<body>
<script src="script.js"></script>
</body>
</html>
```
#### CSS样式
设置页面背景颜色为黑色,并隐藏默认滚动条;同时编写用于控制烟花粒子运动轨迹的关键帧动画规则。
```css
/* styles.css 文件内容 */
@keyframes riseAndExplode {
from {
transform: translateY(100vh);
opacity: 0;
}
to {
transform: translateY(-=randomHeight); /* 随机高度 */
opacity: 1;
}
}
.firework-particle {
position: absolute;
bottom: 0;
width: 4px;
height: 4px;
border-radius: 50%;
animation-name: riseAndExplode;
animation-duration: 2s;
animation-timing-function: ease-in-out;
}
```
#### JavaScript逻辑
通过`document.createElement()`动态生成多个代表不同方向散射的小圆点元素作为烟花碎片,在适当时间触发它们执行预设好的上升爆炸下降动作序列。
```javascript
// script.js 文件内容
function createFirework() {
const particleCount = Math.floor(Math.random() * (70 - 30)) + 30;
for(let i = 0 ;i<particleCount;i++){
let fireworkParticle=document.createElement('div');
document.body.appendChild(fireworkParticle);
fireworkParticle.classList.add('firework-particle');
// 设置随机位置
fireworkParticle.style.left=`${Math.random()*window.innerWidth}px`;
// 计算随机角度偏移量
var angleOffset=(Math.PI*2)/particleCount*i+(Math.random()-0.5)*Math.PI/6;
// 应用变换矩阵来调整每个粒子的方向向量
Object.assign(fireworkParticle.style,{
WebkitTransform:`rotate(${angleOffset}rad)`,
MozTransform : `rotate(${angleOffset}rad)`,
msTransform : `rotate(${angleOffset}rad)` ,
OTransform : `rotate(${angleOffset}rad)` ,
transform : `rotate(${angleOffset}rad)`
});
setTimeout(() => {
fireworkParticle.remove();
}, 4000);
}
requestAnimationFrame(createFirework);
}
createFirework();[^1]
```
上述代码实现了基础版本的烟花特效展示功能。实际应用中可根据需求进一步优化视觉表现力,比如增加更多种类的颜色变化模式或是加入声音反馈机制等特性。
阅读全文