仿真炫酷烟花+背景音乐-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/[email protected]"></script>
<script src="./js/[email protected]"></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文件:

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

完整源码下载

完整源码地址:

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. 在新年的征程中,愿你勇往直前,克服困难,收获喜悦。

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

猜你喜欢

转载自blog.csdn.net/weixin_52908342/article/details/135425100