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

news2024/12/26 21:28:05

文章目录

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

背景

烟花仿真是一项具有创意和娱乐性质的项目,旨在通过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. 在新年的征程中,愿你勇往直前,克服困难,收获喜悦。

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

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

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

相关文章

ubuntu20.04安装cuda11.7和显卡驱动

1、禁用nouveau sudo vi /etc/modprobe.d/nouveau.conf 在最下面加入blacklist nouveau sudo update-initramfs -u sudo reboot 输入命令&#xff0c;如果没有任何输出&#xff0c;证明禁用成功 lsmod | grep nouveau 2、安装cuda11.7 CUDA Toolkit Archive | NVIDIA Deve…

再谈“敏捷”与“瀑布”在产品开发过程中的反思

作为一家专注于软件开发的公司《智创有术》&#xff0c;我们致力于为客户提供创新、高效和可靠的解决方案。通过多年的经验和专业知识&#xff0c;我们已经在行业内建立了良好的声誉&#xff0c;并赢得了客户的信任和支持。 支持各种源码&#xff0c;网站搭建&#xff0c;APP&a…

AI绘画Midjourney绘画提示词Prompt大全

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

网络通信(10)-C#TCP客户端实例

本文使用Socket在C#语言环境下完成TCP客户端的实例。 实例完成的功能: 客户端与服务器连接,实现实时刷新状态。 客户端接收服务器的数据。 客户端发送给服务器的数据。 客户端实时判定状态,断开连接后自动重连。 客户端与服务器端发送心跳包。 在VS中创建C# Winform项…

UE5 VR版增强输入初体验 官方模板学习

问题 我们传统的输入方式&#xff0c;是通过编辑器设置输入操作映射&#xff0c;然后BindAction和BindAxis绑定 这边插播一条增强输入知识点&#xff0c;参考知乎大佬文章 和增强输入的VR模板教学&#xff1a;如何使用VR模板在UE5中使用增强输入系统_哔哩哔哩_bilibili 实践操…

JMeter之测试WebService接口

JMeter之测试WebService接口 1 背景2 目的3 介绍4 具体操作4.1 soapUI调用4.2 JMeter工具调用4.3 操作步骤流程4.3 重点 1 背景 WebService应用的范围是非常广&#xff0c;任何需要跨平台、跨系统进行数据交换和功能调用的场景都可以用此来实现&#xff0c;在实际的工作中也常常…

【python入门】day20:学生信息管理系统CRUD,排序模块和项目打包中的业务流程、具体实现

CRUD&#xff0c;每个程序员都必须掌握的 录入C create def save(lst):#保存信息try: #保存成绩时有可能出错&#xff0c;所以使用try-exceptstu_txtopen(filename,a,encodingutf-8)#filename是个变量&#xff0c;所以不用写单引号#文件以追加模式打开#怕中文乱码&…

1.5 Unity中的数据存储 PlayerPrefs、XML、JSON

Unity中的三种数据存储&#xff1a;数据存储也称为数据持久化 一、PlayerPrefs PlayerPrefs是Unity引擎自身提供的一个用于本地持久化保存与读取的类&#xff0c;以键值对的形式将数据保存在文件中&#xff0c;然后程序可以根据关键字提取数值。 PlayerPrefs类支持3种数据类…

CTFhub-Web-Web前置技能-“302跳转“

题目信息 HTTP临时重定向&#xff0c;题目截图如下所示&#xff1a; 分析过程 看到跳转路径为&#xff1a;http://challenge-d1a96d97eaecf029.sandbox.ctfhub.com:10800/index.html 分析可能存在重定向问题&#xff0c;如果要想获得flag&#xff0c;则可能存在http://chal…

秋招复习之树

目录 前言 1 二叉树 二叉树常见术语 二叉树基本操作 初始化二叉树 插入与删除节点 常见二叉树类型 1. 完美二叉树 2. 完全二叉树 3. 完满二叉树 4. 平衡二叉树 二叉树的退化 2 二叉树遍历 层序遍历 代码实现 复杂度分析 前序、中序、后序遍历 复杂度分析 3 二叉树数组表示 表…

大一,如何成为一名fpga工程师?

​ 1、数电&#xff08;必须掌握的基础&#xff09;&#xff0c;然后进阶学模电&#xff08;选学&#xff09;&#xff0c; 2、掌握HDL&#xff08;HDLverilogVHDL&#xff09;可以选择verilog或者VHDL&#xff0c;建议verilog就行。 3、掌握FPGA设计流程/原理&#xff08;推…

YOLOv5源码中的参数超详细解析(6)— common.py

前言:Hello大家好,我是小哥谈。YOLOv5是一种先进的目标检测算法,它可以实现快速和准确的目标检测。common.py文件是YOLOv5中的一个模块,它包含了一些常用的函数和类,用于定义网络结构中的各个模块。该文件中的函数和类被其他文件引用,用于构建整个YOLOv5模型。本节课就结…

「Verilog学习笔记」任意奇数倍时钟分频

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule clk_divider#(parameter dividor 5) ( input clk_in,input rst_n,output clk_out );parameter CNT_WIDTH $clog2(dividor - 1) ; reg flag1, f…

开发个小破软件——网址导航,解压就能用

网址导航 网站导航也称链接目录&#xff0c;将网站地址或系统地址分类&#xff0c;以列表、图文等形式呈现&#xff0c;帮助快速找到需要的地址。 应用场景 高效查找&#xff1a;网址导航是很好的入口&#xff0c;通过分类清晰的网站推荐&#xff0c;可以迅速访问网站资源。…

【网络层】网际控制报文协议ICMP(湖科大慕课自学笔记)

网际控制报文协议ICMP 1&#xff1a;网际控制报文协议ICMP基本概述 ICMP报文被封装在IP数据报中发送 1&#xff1a;ICMP报文格式 ICMP报文作为IP数据报的数据载荷&#xff0c;IP协议为其添加一个首部使之成为IP数据报 2&#xff1a;ICMP报文类型 ICMP报文分为两大类&#x…

C++string类的介绍及常用函数用法总结

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生&#x1f43b;‍❄个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE&#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&a…

java 打印日志的几种方式

java 打印日志的几种方式 Java 日志框架进化史日志门面与日志系统 Log4jslf4jLog4j2slf4jLogbackslf4j 一、先简单介绍五种 &#xff08;1&#xff09;最简单的方式&#xff0c;就是system.println.out(error) ,这样直接在控制台打印消息了&#xff1b; &#xff08;2&#xff…

web前端——clear可以清除浮动产生的影响

clear可以解决高度塌陷的问题&#xff0c;产生的副作用要小 未使用clear之前 <!DOCTYPE html> <head><meta charset"UTF-8"><title>高度塌陷相关学习</title><style>div{font-size:50px;}.box1{width:200px;height:200px;backg…

晶圆代工降价竞争进入白热化,降幅最高15% | 百能云芯

随着半导体产业的不确定性和市况回落&#xff0c;晶圆代工市场再次掀起波澜&#xff0c;“降价大军”再添猛将。 据综合媒体报道&#xff0c;传三星计划在2024年第一季度调降晶圆代工报价&#xff0c;提供5%至15%的折扣&#xff0c;并表示愿意进一步协商。 台积电根据客户的投产…

【Pytorch】学习记录分享10——TextCNN用于文本分类处理

【Pytorch】学习记录分享10——PyTorchTextCNN用于文本分类处理 1. TextCNN用于文本分类2. 代码实现 1. TextCNN用于文本分类 具体流程&#xff1a; 2. 代码实现 # coding: UTF-8 import torch import torch.nn as nn import torch.nn.functional as F import numpy as np…