使用 HTML 和 CSS 实现绚丽的节日烟花效果

news/2025/1/8 19:42:48/

文章目录

  • 1. 效果预览
  • 2. 核心技术栈
  • 3. 核心代码解读
    • 3.1 HTML结构
    • 3.2 霓虹文字的CSS样式
      • 3.2.1 核心样式代码
      • 3.2.2 动画效果
    • 3.3 JavaScript 的烟花效果实现
      • 3.3.1 烟花上升
      • 3.3.2 粒子爆炸
  • 4. 用户交互
  • 5. 运行步骤
  • 总结

1. 效果预览

请添加图片描述

  • 打开后输入文本的展示内容
    在这里插入图片描述

  • 用户点击页面后播放背景音乐,并隐藏提示在这里插入图片描述

  • 绚丽的动态烟花效果,支持多种烟花形状:心型、螺旋形、圆形、六芒星型、星型、花朵型
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

  • 炫酷的霓虹文字效果,动态颜色渐变与光晕呼吸动画

  • 点击任意位置触发烟花爆炸,粒子颜色与样式随机

2. 核心技术栈

  • HTML5:搭建页面结构,定义容器和音频。
  • CSS3:实现动画效果(烟花、霓虹文字等)。
  • JavaScript:控制用户交互、生成烟花、随机效果等逻辑。

3. 核心代码解读

3.1 HTML结构

  • HTML 部分主要包含以下元素

    • 一个动态文字容器,顶部显示“html" title=节日>节日快乐”字样。
    • 一个用于展示烟花效果的容器
    • 一个隐藏的背景音乐播放器
    • 一个提示用户点击的文字提示
  • 代码

html"><div class="dynamic-text" id="dynamicText">XXX,html" title=节日>节日快乐!</div>
<div class="firework-container" id="firework-container"></div>
<div id="musicPrompt">点击页面任意位置播放音乐并观看烟花</div>
<audio id="backgroundMusic" loop><source src="xue.mp3" type="audio/mpeg">您的浏览器不支持音频播放。
</audio>

3.2 霓虹文字的CSS样式

文字部分的样式通过 CSS 动画 增强,包括颜色渐变流动呼吸光晕效果以及动态文字的模糊效果

3.2.1 核心样式代码

  • 代码:
css">.dynamic-text {position: absolute;top: 20px;left: 50%;transform: translateX(-50%);font-size: 48px;font-weight: bold;color: #fff;text-align: center;background: linear-gradient(90deg, #ff00ff, #ff8800, #ff00ff);-webkit-background-clip: text;-webkit-text-fill-color: transparent;animation: gradient-flow 5s infinite linear, glow-pulse 2s infinite ease-in-out;text-shadow: 0 0 5px #ff00ff,0 0 10px #ff00ff,0 0 20px #ff00ff,0 0 40px #ff8800,0 0 80px #ff8800;letter-spacing: 5px;
}

3.2.2 动画效果

  • 渐变流动效果:通过 @keyframes gradient-flow,让文字的颜色渐变动态流动
  • 代码
css">@keyframes gradient-flow {0% {background-position: 0% 50%;}100% {background-position: 100% 50%;}
}
  • 光晕呼吸动画:通过 @keyframes glow-pulse,实现文字的光晕强弱交替变化
  • 代码
css">@keyframes glow-pulse {0%, 100% {text-shadow: 0 0 5px #ff00ff,0 0 10px #ff00ff,0 0 20px #ff00ff,0 0 40px #ff8800,0 0 80px #ff8800;}50% {text-shadow: 0 0 10px #ff00ff,0 0 20px #ff00ff,0 0 40px #ff00ff,0 0 60px #ff8800,0 0 100px #ff8800;}
}

3.3 JavaScript 的烟花效果实现

烟花效果是项目的核心部分,它通过 JavaScript 动态生成粒子,并为每个粒子赋予不同的运动轨迹

3.3.1 烟花上升

  • 每个烟花爆炸之前,会有一个火箭从页面底部升起
  • 火箭动画通过 CSS 的 @keyframes move-up 实现
  • 代码
css">@keyframes move-up {0% {transform: translateY(0);}100% {transform: translateY(-50vh);}
}
  • 使用 createFirework() 函数,动态生成火箭,并将其添加到 DOM 中
  • 代码
function createFirework(x = Math.random() * window.innerWidth, y = window.innerHeight * 0.5) {const rocket = document.createElement("div");rocket.classList.add("rocket");rocket.style.left = `${x}px`; // 设置火箭水平位置rocket.style.bottom = "0px"; // 从页面底部发射container.appendChild(rocket);// 火箭到达中间后爆炸rocket.addEventListener("animationend", () => {rocket.remove(); // 移除火箭explodeFirework(x, y); // 绽放烟花});
}

3.3.2 粒子爆炸

  • 每个烟花到达目标高度后,触发爆炸生成粒子
  • 粒子的动画由 @keyframes explode 实现,随机生成粒子的位置和颜色
  • 代码
css">@keyframes explode {0% {opacity: 1;transform: translate(0, 0) scale(1);}100% {opacity: 0;transform: translate(var(--dx), var(--dy)) scale(0.5);}
}
  • explodeFirework() 函数生成不同形状的烟花。支持多种形状,包括圆形、心型、星型、螺旋形、六芒星、花朵形等。
  • 代码
function explodeFirework(x, y) {const types = ["circle", "heart", "star", "spiral", "six-pointed", "flower"];const type = types[Math.floor(Math.random() * types.length)];const particleCount = 150;for (let i = 0; i < particleCount; i++) {const particle = document.createElement("div");particle.classList.add("particle");let dx, dy;if (type === "circle") {const angle = (i / particleCount) * Math.PI * 2;dx = Math.cos(angle) * 200;dy = Math.sin(angle) * 200;} else if (type === "heart") {const angle = (i / particleCount) * Math.PI * 2;dx = 16 * Math.pow(Math.sin(angle), 3) * 10;dy = -(13 * Math.cos(angle) - 5 * Math.cos(2 * angle) - 2 * Math.cos(3 * angle) - Math.cos(4 * angle)) * 10;} else if (type === "star") {const angle = (i % 5) * (Math.PI * 2) / 5;const distance = i % 2 === 0 ? 150 : 80;dx = Math.cos(angle) * distance;dy = Math.sin(angle) * distance;} 

4. 用户交互

  • 用户可以点击页面任意位置触发烟花,并播放背景音乐
  • 代码
// 用户点击播放音乐并隐藏提示
function playMusic() {backgroundMusic.play().catch((err) => {console.error("音乐播放失败:", err);});musicPrompt.style.display = "none"; // 隐藏提示
}window.addEventListener("click", playMusic);

5. 运行步骤

  • 下载源码压缩包 —— 烟花实现

  • 解压文件

  • 双击烟花.html 即可通过浏览器打开在这里插入图片描述

  • 在弹出对话框中输入你要显示的文本在这里插入图片描述

  • 点击屏幕任意位置,播放背景音乐这里默认歌曲是《봄눈》(春雪)在这里插入图片描述

总结

  • 如有疑问,或遇到问题,请私信我或在评论区留言
  • 如果觉得还不错请给留下您宝贵的点赞收藏,感谢!

http://www.ppmy.cn/news/1559974.html

相关文章

小程序分包优化实践:解决主包过大和vendor.js体积问题

随着 uniapp 开发的小程序功能越来越复杂&#xff0c;主包的大小也逐渐增长&#xff0c;导致上传代码时遇到了2MB的限制。同时&#xff0c;由于微信小程序tabbar页面必须放在主包中&#xff0c;这进一步增加了主包的负担。为了提高用户体验并遵守平台规则&#xff0c;我们有必要…

HTML5新特性|01 音频视频

音频 1、Audio (音频) HTML5提供了播放音频文件的标准 2、control(控制器) control 属性供添加播放、暂停和音量控件 3、标签: <audio> 定义声音 <source> 规定多媒体资源,可以是多个<!DOCTYPE html> <html lang"en"> <head><…

谈一谈数据库中的死锁问题

文章目录 死锁是什么&#xff1f;死锁的四个必要条件避免死锁的策略 本篇文章是基于《MySQL45讲》来写的个人理解与感悟。 死锁是什么&#xff1f; 死锁是指两个或两个以上的进程在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。若无外力作用&a…

群落生态学研究进展▌Hmsc包对于群落生态学假说的解读、Hmsc包开展单物种和多物种分析的技术细节及Hmsc包的实际应用

HMSC&#xff08;Hierarchical Species Distribution Models&#xff09;是一种用于预测物种分布的统计模型。它在群落生态学中的应用广泛&#xff0c;可以帮助科学家研究物种在不同环境条件下的分布规律&#xff0c;以及预测物种在未来环境变化下的潜在分布范围。 举例来说&a…

虚拟化服务器在云计算中起着什么作用?

虚拟化服务器属于是云计算的基础组成部分&#xff0c;是通过在单一的物理服务器上运行多个虚拟机&#xff0c;让服务器中的计算资源能够被高效的分配和管理&#xff0c;在极大程度上增强了资源的利用率&#xff0c;虚拟化技术还为云服务的可靠性与弹性扩展提供了重要的保障。 下…

【项目】智能BI洞察引擎 测试报告

目录 一、项目背景BI介绍问题分析项目背景 二、项目功能三、功能测试1、登录测试测试用例测试结果 2、注册测试测试用例测试结果出现的bug 3、上传文件测试测试用例测试结果 4、AI生成图表测试测试用例测试结果 5、分析数据页面测试&#xff08;异步&#xff09;测试用例测试结…

汇编点灯练习

要求&#xff1a; 1、轮流将LED1、LED2、LED3及蜂鸣器点亮 2、基于STM32MP157AAA&#xff0c;阅读原理图和STM32MP157芯片手册 3、ARM汇编指令点灯 1、运行效果 汇编点灯 2、通过查询原理图和芯片手册&#xff0c;得到以下结论&#xff1a; 3、汇编源码 .text .global _start…

手写顺序流程图组件

效果图 完整代码 <template><div><div class"container" :style"{ width: ${spacingX * (colNum - 1) itemWidth * colNum}px }"><divv-for"(item, i) in recordList":key"i"class"list-box":style&…