仿真炫酷烟花+背景音乐-H5代码实现_可直接运行【附完整源码】

文章目录

  • 背景
  • 效果
  • 实现源码
  • 代码解析
  • 完整源码下载
  • 总结
  • 寄语

背景

烟花仿真是一项具有创意和娱乐性质的项目,旨在通过H5技术实现炫酷的烟花效果,并结合背景音乐营造出一个生动、愉悦的视听体验。该项目的目标是通过Web浏览器即时展现精美的烟花效果,使用户能够在任何设备上欣赏到令人惊叹的视觉和听觉盛宴。

项目特点:

  1. H5技术实现: 通过HTML5、CSS3和JavaScript等前端技术,实现烟花的精准控制和呈现,使其能够在各种设备上流畅运行。

  2. 烟花仿真效果: 利用粒子系统等技术,实现真实、绚丽、炫目的烟花效果,包括不同形状、颜色和爆炸效果,以模拟真实烟花的多样性。

  3. 背景音乐配合: 整合背景音乐,通过音乐的旋律、节奏与烟花效果的变化相协调,提升用户的沉浸感和愉悦感。

  4. 跨平台兼容性: 确保项目在各种现代浏览器和设备上良好运行,包括桌面电脑、平板电脑和手机。

  5. 用户互动: 提供用户互动功能,例如点击屏幕生成特定烟花效果或调整音乐的音量,增强用户参与感。

  6. 定制化选项: 允许用户选择不同的烟花主题、颜色和背景音乐,使项目更具个性化和趣味性。

  7. 分享功能: 提供分享按钮,让用户能够分享他们精心创作的烟花秀和音乐搭配,扩大项目的社交影响力。

通过以上特点,该项目旨在为用户带来一场视听盛宴,让他们在任何时候、任何地点都能够欣赏到独特而令人愉悦的烟花表演。

效果

在这里插入图片描述
项目目录:

在这里插入图片描述

实现源码

运行firework可以直接运行项目,因项目代码较多,需要完整源码请到文章末尾【完整源码下载】处下载。

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>新年快乐!!!!!</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="theme-color" content="#000000">
<link rel="shortcut icon" type="image/png" href="./image/firework-burst-icon-v2.png">
<link rel="icon" type="image/png" href="./image/firework-burst-icon-v2.png">
<link rel="apple-touch-icon-precomposed" href="./image/firework-burst-icon-v2.png">
<meta name="msapplication-TileColor" content="#000000">
<meta name="msapplication-TileImage" content="./image/firework-burst-icon-v2.png">
<link href="https://fonts.googleapis.com/css?family=Russo+One" rel="stylesheet"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<link rel="stylesheet" href="./css/firework.css">

</head>
<body>
<audio id="a1" loop="loop"> 
	<source src="xnkl.mp3"> 
</audio>
<!-- partial:index.partial.html -->
<!-- SVG Spritesheet -->
<div style="height: 0; width: 0; position: absolute; visibility: hidden;">
	<svg xmlns="http://www.w3.org/2000/svg">
		<symbol id="icon-play" viewBox="0 0 24 24">
			<path d="M8 5v14l11-7z"/>
		</symbol>
		<symbol id="icon-pause" viewBox="0 0 24 24">
			<path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/>
		</symbol>
		<symbol id="icon-close" viewBox="0 0 24 24">
			<path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
		</symbol>
		<symbol id="icon-settings" viewBox="0 0 24 24">
			<path d="M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z"/>
		</symbol>
		<symbol id="icon-sound-on" viewBox="0 0 24 24">
			<path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"/>
		</symbol>
		<symbol id="icon-sound-off" viewBox="0 0 24 24">
			<path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z"/>
		</symbol>
	</svg>
</div>

<!-- App -->
<div class="container">
	<div class="loading-init">
		<div class="loading-init__header">Loading</div>
		<div class="loading-init__status">Assembling Shells</div>
	</div>
	<div class="stage-container remove">
		<div class="canvas-container">
			<canvas id="trails-canvas"></canvas>
			<canvas id="main-canvas"></canvas>
		</div>
		<div class="controls">
			<div class="btn pause-btn">
				<svg fill="white" width="24" height="24"><use href="#icon-pause" xlink:href="#icon-pause"></use></svg>
			</div>
			<div class="btn sound-btn">
				<svg fill="white" width="24" height="24"><use href="#icon-sound-off" xlink:href="#icon-sound-off"></use></svg>
			</div>
			<div class="btn settings-btn">
				<svg fill="white" width="24" height="24"><use href="#icon-settings" xlink:href="#icon-settings"></use></svg>
			</div>
		</div>
		<div class="menu hide">
			<div class="menu__inner-wrap">
				<div class="btn btn--bright close-menu-btn">
					<svg fill="white" width="24" height="24"><use href="#icon-close" xlink:href="#icon-close"></use></svg>
				</div>
				<div class="menu__header">Settings</div>
				<div class="menu__subheader">For more info, click any label.</div>
				<form>
					<div class="form-option form-option--select">
						<label class="shell-type-label">Shell Type</label>
						<select class="shell-type"></select>
					</div>
					<div class="form-option form-option--select">
						<label class="shell-size-label">Shell Size</label>
						<select class="shell-size"></select>
					</div>
					<div class="form-option form-option--select">
						<label class="quality-ui-label">Quality</label>
						<select class="quality-ui"></select>
					</div>
					<div class="form-option form-option--select">
						<label class="sky-lighting-label">Sky Lighting</label>
						<select class="sky-lighting"></select>
					</div>
					<div class="form-option form-option--select">
						<label class="scaleFactor-label">Scale</label>
						<select class="scaleFactor"></select>
					</div>
					<div class="form-option form-option--checkbox">
						<label class="auto-launch-label">Auto Fire</label>
						<input class="auto-launch" type="checkbox" />
					</div>
					<div class="form-option form-option--checkbox form-option--finale-mode">
						<label class="finale-mode-label">Finale Mode</label>
						<input class="finale-mode" type="checkbox" />
					</div>
					<div class="form-option form-option--checkbox">
						<label class="hide-controls-label">Hide Controls</label>
						<input class="hide-controls" type="checkbox" />
					</div>
					<div class="form-option form-option--checkbox form-option--fullscreen">
						<label class="fullscreen-label">Fullscreen</label>
						<input class="fullscreen" type="checkbox" />
					</div>
					<div class="form-option form-option--checkbox">
						<label class="long-exposure-label">Open Shutter</label>
						<input class="long-exposure" type="checkbox" />
					</div>
				</form>
				<div class="credits">
					Passionately built by <a href="https://cmiller.tech/" target="_blank">Caleb Miller</a>.
				</div>
			</div>
		</div>
	</div>
	<div class="help-modal">
		<div class="help-modal__overlay"></div>
		<div class="help-modal__dialog">
			<div class="help-modal__header"></div>
			<div class="help-modal__body"></div>
			<button type="button" class="help-modal__close-btn">Close</button>
		</div>
	</div>
</div>
<!-- partial -->
  <script src="./js/fscreen@1.0.1.js"></script>
<script src="./js/Stage@0.1.4.js"></script>
<script src="./js/MyMath.js"></script><script  src="./js/firework.js"></script>
<script>
    window.onload=function () {
        let oA=document.querySelector("#a1");
        let timer=null;
        function autoPlay() {
            if (oA.paused) { //如果暂停
                oA.paused=false;//设为不暂停
                oA.volume=0.5;//设置自动播放的初始音量
                oA.play();//调用play()方法播放
            }else {//如果未暂停
                clearInterval(timer);//清掉定时器
            }
        }
        timer=setInterval(autoPlay,1);//用定时器触发autoplay自动播放
    }
</script>
</body>
</html>

代码解析

这是一个简单的HTML文档,其中包含了一些元标签(meta tags)和外部链接,引入了CSS和JavaScript文件,以及一些SVG图标。

  1. 文档声明和基本设置:

    • <!DOCTYPE html>:声明文档类型为HTML5。
    • <html lang="en">:指定文档语言为英语。
  2. 头部信息:

    • <meta charset="UTF-8">:指定字符集为UTF-8。
    • <title>新年快乐!!!!!</title>:设置网页标题。
    • <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">:设定视口宽度、初始缩放和用户是否可以缩放。
    • 一系列<meta>标签和<link>标签设置移动端Web应用的图标和主题颜色。
    • 引入Google Fonts和meyer-reset CSS库。
  3. 音频元素和自动播放设置:

    • <audio id="a1" loop="loop">:定义音频元素,ID为"a1",并设置循环播放。
    • <source src="xnkl.mp3">:指定音频文件路径。
  4. SVG图标:

    • 通过<symbol>标签定义了几个SVG图标,分别表示播放、暂停、关闭、设置、声音开启和声音关闭。
  5. 页面主体:

    • 包含一个隐藏的<div>元素,其中包含一些SVG图标的定义。
    • 一个具有类名"container"的主体<div>,内部包含了加载状态、舞台容器、控制按钮、菜单等元素。
  6. 引入外部JavaScript文件:

    • 引入了fscreen@1.0.1.jsStage@0.1.4.jsMyMath.jsfirework.js等JavaScript文件。
    • 最后,还有一个嵌入式JavaScript代码块,用于自动播放音频。

整个页面看起来是一个烟花动画的交互式应用,用户可以通过控制按钮和菜单调整烟花的各种参数,同时伴随着背景音乐。

完整源码下载

完整源码地址:

https://download.csdn.net/download/weixin_52908342/88710198

总结

这个HTML文档是一个烟花动画的交互式Web应用,具体总结如下:

  1. 基本结构: 使用HTML5声明,包含了头部信息和页面主体。

  2. 元标签和设置: 使用meta标签设定字符集、视口、移动端应用设置等。

  3. 图标和主题颜色: 引入SVG图标,定义了移动端应用的图标和主题颜色。

  4. 外部资源: 引入Google Fonts和meyer-reset CSS库,以及一系列JavaScript文件,包括烟花动画所需的脚本。

  5. 音频元素: 使用<audio>元素嵌入背景音乐,并通过JavaScript实现自动播放。

  6. 页面主体: 包含加载状态、舞台容器、控制按钮、菜单等元素,通过CSS和JavaScript实现交互式效果。

  7. 用户交互: 用户可以通过控制按钮和菜单调整烟花的各种参数,包括烟花类型、大小、质量等。

  8. 技术实现: 使用HTML5、CSS3、JavaScript等前端技术,结合SVG图标和外部JavaScript库,实现了炫酷的烟花效果和交互式操作。

总体而言,这个项目通过结合视觉、听觉效果,提供了一个有趣的、互动性强的在线烟花体验。

寄语

在新的一年开始之际,送上一些美好的寄语:

  1. 愿你新的一年充满欢笑和温馨,收获成功和快乐。

  2. 希望你在新的一年里能够实现更多的梦想,迎来更多的成就。

  3. 愿你的生活像烟花一样绚丽多彩,每一刻都充满惊喜。

  4. 在新的一年里,愿你的健康和幸福如烟花般绽放。

  5. 迎接新年,带着感激的心,感谢过去的一切,期待未来的美好。

  6. 让我们一起努力,创造更美好的明天,为自己和身边的人带来更多幸福。

  7. 愿新年带给你无尽的希望,坚定的决心,和美好的开始。

  8. 在新年的征程中,愿你勇往直前,克服困难,收获喜悦。

愿你的新年充满希望和阳光,成为美好记忆的开端。祝你新年快乐!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/298236.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jackson反序列化的规则 没有无参构造报错问题

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of java.util.function.Supplier. Jackson反序列化的规则 没有无参构造报错问题 &#xff1b; 报错如下&#xff1a; com.fasterxml.jackson.databind.exc.InvalidDefinitionExce…

欧洲地区媒体发稿推广攻略10个利器解析-华媒舍

在当今数字化时代&#xff0c;媒体发稿是企业推广的重要手段之一。尤其是在欧洲地区这个高度发达的市场中&#xff0c;正确地运用媒体发稿推广工具将给企业带来巨大的商机。本文将揭示欧洲地区媒体发稿推广的10个利器&#xff0c;帮助企业更好地利用媒体发布推广信息&#xff0…

通过cpolar在公网访问本地网站

通过cpolar可以轻松将本地网址映射到公网进行访问&#xff0c;下面简要介绍一下实现步骤。 目录 一、cpolar下载 二、安装 三、使用 3.1 登录 3.2 创建隧道 一、cpolar下载 cpolar官网地址&#xff1a;cpolar - secure introspectable tunnels to localhost 通过QQ邮箱…

Python如何求解最长公共子序列

Python-求解两个字符串的最长公共子序列 一、问题描述 给定两个字符串&#xff0c;求解这两个字符串的最长公共子序列&#xff08;Longest Common Sequence&#xff09;。比如字符串1&#xff1a;BDCABA&#xff1b;字符串2&#xff1a;ABCBDAB。则这两个字符串的最长公共子序…

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-https://blog.csdn.net/alex_starsky/category_12467518.html 如何使用大模型查询助手功能&#xff1f;例如调用工具实现网络查询助手功能。目前只有 ChatGLM3-6B 模型支持工具调用&#xff0c;而 ChatGLM3-6B-Base 和 ChatGLM3-6B-32K 模型不支持。 定义好工具的…

【Android取证篇】小米手机OTG取证知识

【Android取证篇】小米手机OTG取证知识 小米手机OTG使用方法—【蘇小沐】 目录 1、OTG用途 2、手机连不上U盘 3、小米手机有没有OTG 4、手机usb调试找不到 5、MHL能否在HDMI输出视频的同时进行USB传输 1、OTG用途 使用OTG外接设备&#xff0c;需要使用和手机接口对应匹配的…

一起学docker(六)| docker网络

Docker网络 不启动docker&#xff0c;网络情况&#xff1a; 启动docker&#xff0c;网络情况&#xff1a; 作用 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接网络通信而不受影响 常用命令 docker network --help 查看docker网络相关命令docker network…

C++——STL标准模板库——容器详解——stack+queue

一、基本概念 &#xff08;一&#xff09;stack&#xff08;栈或堆栈&#xff09; 一种只允许同一端进出的线性数据结构&#xff0c;数据先进后出。基本模型类似于瓶子。 &#xff08;二&#xff09;queue&#xff08;队列&#xff09; 一种只允许一端进、另一端出的线性数…

Tomcat服务为什么起不来?

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 服务跑在Tomcat下面&#xff0c;有时候会遇到Tomcat起不来的情况。目前为止常遇到的情况有如下几种&#xff1a; 1. Tomcat服务…

Linux第11步_解决“挂载后的U盘出现中文乱码”

学习完“通过终端挂载和卸载U盘”&#xff0c;我们发现U盘下的中文文件名会出现乱码&#xff0c;现在讲解怎么解决这个问题。其实就是复习一下“通过终端挂载和卸载U盘”&#xff0c;单独讲解&#xff0c;是为了解决问题&#xff0c;一次性搞好&#xff0c;我们会不长记性。 在…

无心剑七绝《高斯黎曼》

七绝高斯黎曼 高耸云端四海惊 斯人伟绩震豪英 黎霞璀璨通灵处 曼妙方程万世名 2024年1月6日 平水韵八庚平韵 《七绝高斯黎曼》是无心剑所作的一首以数学家为主题的七言绝句。全诗巧妙地将两位杰出的数学家——高斯&#xff08;Carl Friedrich Gauss&#xff09;与黎曼&#…

性能优化-OpenMP基础教程(三)

本文主要介绍OpenMP并行编程的环境变量和实战、主要对比理解嵌套并行的效果。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教程 &#x1f380;CSDN主页 发狂的小花 &…

HarmonyOS 应用开发学习笔记 stateStyles:多态样式

1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器&#xff1a;定义组件重用样式 Extend装饰器&#xff1a;定义扩展组件样式 前面记录了ets组件样式…

基于粒子群算法的曲面路径优化

目录 摘要 测试函数shubert 粒子群算法的原理 粒子群算法的主要参数 粒子群算法原理 粒子群算法参数拟合 代码 结果分析 展望 基于粒子群算法的曲面路径优化(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88698419 摘要 寻优算法,…

Guarded Suspension模式--适合等待事件处理

Guarded是被守护、被保卫、被保护的意思&#xff0c; Suspension则是暂停的意思。 如果执行现在的处理会造成问题&#xff0c; 就让执行处理的线程进行等待--- 这就是Guarded Suspension模式。 模式通过让线程等待来保证实例的安全性。 一个线程ClientThread会将请求 Request的…

Linux第16步_安装NFS服务

NFS&#xff08;Network File System&#xff09;是一种在网络上实现的分布式文件系统&#xff0c;它允许不同的操作系统和设备之间共享文件和资源。 在创建的linux目录下&#xff0c;再创建一个“nfs“文件夹&#xff0c;用来供nfs服务器使用&#xff0c;便于”我们的开发板“…

C语言注意点(2)

1.使用pow函数的相关问题 局部变量n0 while(num/pow(10,n)) n; 为什么不可行 printf("%d",num/pow(10,4)%10) 为什么要提前用temp先引出来 答&#xff1a;pow函数的返回值为double类型&#xff0c;1.终止条件不会满足 2.num/pow(10,4)结果为浮点型&#xff0c;浮…

Nginx 常用变量 与 防盗链

目录 1.常用变量 2. $http_referer 配置防盗链 2.1 referer 2.2 配置防盗链 1.常用变量 变量说明 $args 请求中的参数&#xff0c;也叫查询参数 $content_length HTTP响应信息里的"Content-Length" $document_root nginx虚拟主机配置文件中的root站点根目录…

STM32的在线升级(IAP)实现方法:BOOT+APP原理详解

0 工具准备 Keil uVision5 Cortex M3权威指南&#xff08;中文&#xff09; STM32参考手册 1 在线升级&#xff08;IAP&#xff09;设计思路 为了实现STM32的在线升级&#xff08;IAP&#xff09;功能&#xff0c;通常会将STM32的FLASH划分为BOOT和APP两个部分&#xff0c;BOO…

JavaScript:关系数组、对象的复制

关系数组(关联数组)解字符串出现的次数: var str aaccddvvasdadqwd;// 统计每个字母出现的次数// 关系数组(关联数组) 长度永远为0// 使用字符串当做索引var arr [];arr[0] 20;// arr[a] 1;// arr[b] 3;// arr[c] 4;// console.log(arr)for (var i 0; i < str.lengt…