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

文章目录

  • 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 部分主要包含以下元素

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

<div class="dynamic-text" id="dynamicText">XXX,节日快乐!</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 核心样式代码

  • 代码:
.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,让文字的颜色渐变动态流动
  • 代码
@keyframes gradient-flow {0% {background-position: 0% 50%;}100% {background-position: 100% 50%;}
}
  • 光晕呼吸动画:通过 @keyframes glow-pulse,实现文字的光晕强弱交替变化
  • 代码
@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 实现
  • 代码
@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 实现,随机生成粒子的位置和颜色
  • 代码
@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.mzph.cn/bicheng/64989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于openEuler22.09部署OpenStack Yoga云平台(一)

OpenStack Yoga部署 安装OpenStack 一、基础准备 基于OpenStack经典的三节点环境进行部署&#xff0c;三个节点分别是控制节点&#xff08;controller&#xff09;、计算节点&#xff08;compute&#xff09;、存储节点&#xff08;storage&#xff09;&#xff0c;其中存储…

国自然面上项目分享|基于人工智能和病理组学的早癌筛查算法研究|基金申请·24-12-24

小罗碎碎念 今天分享的项目为【常规面上项目】&#xff0c;执行年限为2018年1月至2021年12月&#xff0c;直接费用为55万元。 今天分享的这个项目很有意思&#xff0c;因为这个项目的成果是团队2020年申报基金委优青的材料&#xff0c;并且还有临床验证和商业转化&#xff0c;值…

SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、黑翅鸢算法BKA 黑翅鸢算法&#xff08;Black-winged kite algorithm&#xff0c;BKA&#xff09;由Wang Jun等人于2024年提出&#xff0c;该算法受黑翅鸢的迁徙和掠食行为启发而得。BKA集成了柯西突变策略和领导者策略&#xff0c;增强了算法的全局搜索能力&#xff0c;提…

41 stack类与queue类

目录 一、简介 &#xff08;一&#xff09;stack类 &#xff08;二&#xff09;queue类 二、使用与模拟实现 &#xff08;一&#xff09;stack类 1、使用 2、OJ题 &#xff08;1&#xff09;最小栈 &#xff08;2&#xff09;栈的弹出压入序列 &#xff08;3&#xf…

【笔记】深度学习模型评估指标

推荐链接&#xff1a; &#xff08;0&#xff09;多分类器的评价指标 &#xff08;1&#xff09;泛化误差的评价方法&#xff1a;【机器学习】模型评估与选择&#xff08;留出法、交叉验证法、查全率、查准率、偏差、方差&#xff09; &#xff08;2&#xff09;机器学习&…

Linux运维常见命令

vi/vim快捷键使用 1)拷贝当前行 yy ,拷贝当前行向下的5行 5yy&#xff0c;并粘贴&#xff08;输入p&#xff09;。 2)删除当前行 dd ,删除当前行向下的5行5dd 3)在文件中查找某个单词 [命令行下 /关键字&#xff0c;回车查找 ,输入n就是查找下一个 ] 4)设置文件的行号&…

评估大语言模型在药物基因组学问答任务中的表现:PGxQA

​这篇文献主要介绍了一个名为PGxQA的资源&#xff0c;用于评估大语言模型&#xff08;LLM&#xff09;在药物基因组学问答任务中的表现。 研究背景 药物基因组学&#xff08;Pharmacogenomics, PGx&#xff09;是精准医学中最有前景的领域之一&#xff0c;通过基因指导的治疗…

AI芯片常见概念

文章目录 AI芯片常见概念前言常见概念AI芯片分类按照芯片的技术架构分GPU半定制化的 FPGA全定制化 ASIC神经拟态芯片 按应用场景分训练卡推理卡 按部署位置分国产AI卡资料汇总 AI芯片算力和能效比AI芯片算力AI芯片能效比 封装相关Chiplet技术3DIC三星多芯片集成联盟&#xff08…

SpringBoot中使用AOP切面编程实现登录拦截

使用AOP切面编程实现登录拦截 1. 首先实现一个登录注册功能 以下代码仅供参考 控制层 RestController RequestMapping("/user") public class UserController {Autowiredprivate UserService userService;PostMapping("/register")public Result regis…

重温设计模式--享元模式

文章目录 享元模式&#xff08;Flyweight Pattern&#xff09;概述享元模式的结构C 代码示例1应用场景C示例代码2 享元模式&#xff08;Flyweight Pattern&#xff09;概述 定义&#xff1a; 运用共享技术有效地支持大量细粒度的对象。 享元模式是一种结构型设计模式&#xff0…

用python ollama qwen2.5 开发一个AI修仙游戏

用 Python Ollama (Qwen2.5) 开发一个 AI 修仙游戏 简介 本文将介绍如何使用 Python 和 Ollama (Qwen2.5 模型) 开发一个文字版修仙游戏。这个游戏具有以下特点&#xff1a; 完整的修仙世界观和成长体系基于 AI 生成的动态剧情和事件丰富的物品系统(功法、丹药、灵宝等)社交…

【网络安全】网站常见安全漏洞—服务端漏洞介绍

文章目录 网站常见安全漏洞—服务端漏洞介绍引言1. 第三方组件漏洞什么是第三方组件漏洞&#xff1f;如何防范&#xff1f; 2. SQL 注入什么是SQL注入&#xff1f;如何防范&#xff1f; 3. 命令执行漏洞什么是命令执行漏洞&#xff1f;如何防范&#xff1f; 4. 越权漏洞什么是越…

Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02

在嵌入式开发中&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;是一种常用的串行通信协议&#xff0c;广泛应用于与外设&#xff08;如 EEPROM、传感器、显示屏等&#xff09;进行数据交换。AT24C02 是一种常见的 I2C EEPROM 存储器&#xff0c;它提供 2Kbit…

HDR视频技术之十一:HEVCH.265 的 HDR 编码方案

前文我们对 HEVC 的 HDR 编码优化技术做了介绍&#xff0c;侧重编码性能的提升。 本章主要阐述 HEVC 中 HDR/WCG 相关的整体编码方案&#xff0c; 包括不同应用场景下的 HEVC 扩展编码技术。 1 背景 HDR 信号一般意味着使用更多比特&#xff0c;一般的 HDR 信号倾向于使用 10…

linux普通用户使用sudo不需要输密码

1.root用户如果没有密码&#xff0c;先给root用户设置密码 sudo passwd root #设置密码 2.修改visudo配置 su #切换到root用户下 sudo visudo #修改visudo配置文件 用户名 ALL(ALL) NOPASSWD: ALL #下图所示处新增一行配置 用户名需要输入自己当前主机的用户名

【时间之外】IT人求职和创业应知【74】-运维机器人

目录 OpenAI最强推理模型o3发布&#xff0c;AGI测试能力暴涨 英伟达宣布收购以色列AI初创企业Runai 汤姆猫首款AI机器人产品明日发售 心勿贪&#xff0c;贵知足。 感谢所有打开这个页面的朋友。人生不如意&#xff0c;开越野车去撒野&#xff0c;会害了自己&#xff0c;不如…

C#调用WebService的方法

一、前言 在日常工作中&#xff0c;如果涉及到与第三方进行接口对接&#xff0c;有的会使用WebService的方式&#xff0c;这篇文章主要讲解在.NET Framework中如何调用WebService。 1.创建WebService &#xff08;1&#xff09;新建项目——模板选择ASP.NET Web 应用程序 &a…

Qt creator ,语言家功能缺失解决方法

1、找到工具->外部->配置 2、添加目录&#xff0c;双击命名语言家 3、在语言家目录下&#xff0c;添加工具 双击重命名lupdate&#xff0c;即更新翻译 %{CurrentDocument:Project:QT_INSTALL_BINS}\lupdate%{CurrentDocument:Project:FilePath}%{CurrentDocument:Projec…

Taro小程序开发性能优化实践

我们团队在利用Taro进行秒送频道小程序的同时&#xff0c;一直在探索性能优化的最佳实践。随着需求的不断迭代&#xff0c;项目中的性能问题难免日积月累&#xff0c;逐渐暴露出来影响用户体验。适逢双十一大促&#xff0c;我们趁着这个机会统一进行了Taro性能优化实践&#xf…

springboot471基于协同过滤算法商品推荐系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装协同过滤算法商品推荐系统软件来发挥其高效地信息处理的作用…