HTML炫酷烟花

fireworks

系列文章

序号目录
1HTML满屏跳动的爱心(可写字)
2HTML五彩缤纷的爱心
3HTML满屏漂浮爱心
4HTML情人节快乐
5HTML蓝色爱心射线
6HTML跳动的爱心(简易版)
7HTML粒子爱心
8HTML蓝色动态爱心
9HTML跳动的爱心(双心版)
10HTML橙色动态粒子爱心
11HTML旋转爱心
12HTML爱情树
13HTML3D相册
14HTML旋转相册
15HTML基础烟花秀
16HTML炫酷烟花秀
17HTML粉色烟花秀
18HTML新春烟花
19HTML跨年烟花
20HTML音乐圣诞树
21HTML大雪纷飞
22HTML想见你
23HTML元素周期表
24HTML飞舞的花瓣
25HTML星空特效
26HTML黑客帝国字母雨
27HTML哆啦A梦
28HTML流星雨
29HTML沙漏爱心
30HTML爱心字母雨
31HTML爱心流星雨
32HTML生日蛋糕
33HTML3D旋转相册
34HTML流光爱心
35HTML满屏飘字
36HTML飞舞爱心
37HTML星空圣诞树
38HTML礼物圣诞树
39HTML粉色爱心
40HTML旋转圣诞树

文章目录

  • 系列文章
  • 写在前面
  • 技术需求
  • 完整代码
  • 代码分析
    • 一、HTML结构分析
    • 二、CSS样式分析
    • 三、JavaScript实现功能分析
      • 1. 全局变量初始化
      • 2. 烟花和粒子类设计
        • (1)`Firework`类
        • (2)`Particle`类
      • 3. 烟花效果的生成与动画
      • 4. 窗口自适应
    • 四、代码运行机制与特点
    • 五、总结
  • 写在后面

写在前面

HTML语言实现新春烟花的完整代码。

技术需求

  1. HTML5 Canvas

    • 利用<canvas>标签及其2D绘图上下文(通过getContext("2d")获取)实现烟花动画的动态绘制。
  2. CSS样式

    • 采用绝对定位(position: absolute)确保文字居中显示。
    • 运用视窗单位(vw)动态调整字体大小,并结合颜色渐变(text-shadow)提升视觉效果。
    • 设置深色背景(background-color),以突出烟花的视觉冲击力。
  3. JavaScript动画

    • 面向对象编程:创建FireworkParticle类,封装烟花与粒子的行为属性(如位置、速度、透明度等)。
    • 动画实现:借助requestAnimationFrame确保动画流畅运行;模拟真实物理效果,动态调整粒子的摩擦力、重力和透明度。
    • 随机性:利用Math.random控制粒子的数量、颜色、方向和速度,生成多样化的烟花效果。
    • 拖尾效果:每帧绘制半透明矩形,营造烟花拖尾的视觉效果。
  4. 事件监听

    • 监听resize事件,动态调整<canvas>画布尺寸,以适应窗口大小的变化。

完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>新春烟花</title><style>body {margin: 0;overflow: hidden;background-color: #14141E;font-family: Arial, sans-serif;}canvas {display: block;}#text {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);font-size: 5vw;font-weight: bold;color: rgb(255, 190, 200);text-shadow: 2px 2px 10px rgba(255, 190, 200, 0.7);}</style>
</head>
<body><div id="text">Happy New Year!</div><canvas id="fireworks"></canvas><script>const canvas = document.getElementById("fireworks");const ctx = canvas.getContext("2d");canvas.width = window.innerWidth;canvas.height = window.innerHeight;const colors = ["#ff4d4d", "#ff9933", "#ffcc00", "#33cc33", "#33cccc", "#3399ff", "#cc66ff"];
……

代码分析

以下是对这段HTML代码的详细分析,从页面结构、样式设计到JavaScript实现功能进行全面解读:


一、HTML结构分析

  1. 文档声明与基本结构

    • 代码以<!DOCTYPE html>开头,表明该文档遵循HTML5标准。
    • <html>标签包含整个页面内容,并通过lang="en"属性指定页面语言为英语。
    • <head>标签中定义了元信息:
      • <meta charset="UTF-8">确保页面使用UTF-8字符编码,保障字符正确显示。
      • <meta name="viewport" content="width=device-width, initial-scale=1.0">实现页面在不同设备上的自适应布局。
      • <title>标签定义页面标题为“新春烟花”。
    • <body>标签内包含一个用于显示新年祝福文字的<div>元素和一个用于绘制烟花动画的<canvas>元素。
  2. 关键HTML元素

    • <div id="text">: 显示“Happy New Year!”文字,增强节日氛围。
    • <canvas id="fireworks">: 作为烟花动画的画布元素,提供动态展示的基础。

二、CSS样式分析

  1. 页面整体样式

    • body样式:
      • margin: 0移除默认外边距,使内容充满页面。
      • overflow: hidden隐藏滚动条,避免影响动画效果。
      • background-color: #14141E设置深色背景,与明亮的烟花形成对比。
      • font-family: Arial, sans-serif定义页面字体。
  2. canvas样式

    • display: block消除画布默认的内边距和边框,使其完全平铺页面。
  3. #text样式

    • position: absolute使文字绝对定位。
    • top: 50%left: 50%将文字置于页面中心。
    • transform: translate(-50%, -50%)精确居中,确保文字位置稳定。
    • font-size: 5vw根据视口宽度动态调整文字大小。
    • font-weight: bold加粗字体,突出显示。
    • color: rgb(255, 190, 200)柔和的粉红色字体,增强节日氛围。
    • text-shadow添加光晕效果,使文字更为亮丽。

三、JavaScript实现功能分析

JavaScript部分的核心是通过<canvas>元素生成和控制烟花的动画效果。代码逻辑分为以下几个部分:

1. 全局变量初始化

  • canvasctx:获取画布元素及其上下文,ctx用于调用绘图API。
  • colors:定义颜色数组,用于随机选择烟花颜色。

2. 烟花和粒子类设计

代码使用了两种类:FireworkParticle,分别描述烟花和烟花粒子。

(1)Firework
  • 构造函数
    • 参数xy指定烟花初始位置。
    • this.particles存储粒子对象数组。
    • 调用createParticles方法生成粒子。
  • 方法
    • createParticles:生成50到100个随机数量的粒子。
    • update:更新每个粒子的状态(位置、透明度等),当粒子透明度降至0以下时,将其移除。
    • draw:调用每个粒子的绘制方法。
(2)Particle
  • 构造函数
    • xy为粒子初始位置。
    • radius:粒子大小随机,范围在2到5之间。
    • color:从颜色数组中随机选择颜色。
    • angle:粒子初始运动方向随机。
    • speed:粒子初速度随机,范围在2到7之间。
    • frictiongravity:摩擦力和重力影响粒子运动。
    • alpha:粒子透明度,用于渐隐效果。
  • 方法
    • update:计算粒子的新位置,速度逐渐减小,同时透明度减少。
    • draw:绘制带颜色的圆形粒子,透明度由globalAlpha控制。

3. 烟花效果的生成与动画

  • 全局数组fireworks存储所有当前活动的烟花。
  • addFirework方法:在随机位置创建新的烟花并加入fireworks数组。
  • animate函数:
    • 使用半透明矩形覆盖画布,产生拖影效果。
    • 遍历fireworks数组,更新并绘制每个烟花对象,如果烟花的所有粒子消失,则将其移除。
    • 使用Math.random() < 0.05控制新烟花生成的概率,保持动画间隔随机。
    • 使用requestAnimationFrame保持动画连续性。

4. 窗口自适应

  • window.addEventListener("resize")监听窗口大小变化事件。
  • 每当窗口调整大小时,更新画布尺寸以适应新尺寸。

四、代码运行机制与特点

  1. 烟花效果实现

    • 通过粒子生成与运动模拟烟花爆炸效果。
    • 粒子的颜色、运动方向、速度等均为随机,增强视觉自然感。
    • 每次刷新画布时保留上一帧的残影,形成拖尾效果。
  2. 节日氛围营造

    • 中心文字配合柔和背景和动态烟花,体现新年喜庆主题。
    • 动态画面与静态文字结合,增加视觉层次感。
  3. 性能优化

    • 粒子通过alpha属性逐渐透明并移除,减少内存占用。
    • 拖尾效果使用半透明矩形而非完全清空画布,降低绘制开销。
  4. 响应式设计

    • 使用vw单位和监听窗口变化事件,确保页面在不同设备上良好显示。

五、总结

  1. 功能扩展

    • 可增加鼠标点击触发烟花效果的功能,提升互动性。
    • 添加不同形状的烟花,丰富视觉效果。
    • 支持背景音乐播放,进一步增强节日气氛。
  2. 性能优化

    • 对粒子数量上限进行限制,避免低性能设备卡顿。
    • 使用offscreen canvas处理复杂计算,提升渲染性能。
  3. 用户自定义

    • 提供控制面板,让用户自定义烟花颜色、大小、数量等参数。

这段代码实现了一个极具节日气氛的动态烟花效果,通过HTML、CSS和JavaScript的良好结合,不仅展现了动画设计的美感,还体现了较高的代码组织与性能优化水平。

写在后面

我是一只有趣的兔子,感谢你的喜欢。

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

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

相关文章

【看到哪里写到哪里】算闰年的(year 3) == 0

【&#xff1f;&#xff1f;BUG&#xff1f;&#xff1f;】在MYSQL源码里面有一段&#xff0c;算每年的天数。其中用到了两个很有意思的 1&#xff09;(year & 3) 0 2&#xff09;(year % 400 0 && year)&#xff0c;为什么要 &&year呢&#xff1f; &g…

Redis的渐进式hash和缓存时间戳深入学习

前言 关于redis&#xff0c;可由应用维度、系统维度来进行了解。 如下所示&#xff1a; redis在缓存应用发挥着重要作用&#xff0c;不知道你有没思考过Redis为什么这么快&#xff1f; 1、纯内存访问 为什么内存访问比磁盘访问更快&#xff0c;可参考&#xff1a; 操作系统的…

视频续播功能实现 - 断点续看从前端到 Spring Boot 后端

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…

【工具】Linux 中 find 命令使用教程

find 命令是 Linux 系统中最强大、最灵活的文件搜索工具&#xff0c;其能力远超简单的文件名匹配。掌握 find 能让你在复杂的文件系统中精准定位目标&#xff0c;实现高效的文件管理。 一、命令结构与核心概念 find [起始路径] [选项] [表达式]起始路径&#xff1a;搜索的根目…

0629-

0629 0629操作3. 权限 0629 操作 进入数据库 mysql -uroot -proot123 .use idatabase; select * from customer; 2.select distinct name&#xff0c;idnum from customer; 3.UPDATE customer SET idnum left(MD5(idnum),16); 4. UPDATE customer SET phone CONCAT( LEFT(p…

JVM调优实战 Day 6:JVM性能监控工具实战

【JVM调优实战 Day 6】JVM性能监控工具实战 文章简述 在Java应用的性能优化过程中&#xff0c;JVM性能监控工具是不可或缺的“眼睛”。它们能够帮助开发者实时掌握系统运行状态&#xff0c;识别性能瓶颈&#xff0c;并为后续调优提供数据支撑。本文作为“JVM调优实战”系列的第…

【嘉立创EDA】PCB 如何按板框轮廓进行铺铜

文章路标👉 :one: 文章解决问题:two: 主题内容:three: 参考方法be end..1️⃣ 文章解决问题 操作环境:嘉立创EDA专业版 V2.2.40 本文使用嘉立创EDA,描述如何在PCB设计时,直接使用板框轮廓进行铺铜。本文将此过程记录,以供有需要的读者参考。 2️⃣ 主题内容 在PCB设计…

dockerfile命令及构建

一&#xff0c;dockerfile常用命令 命令介绍FROM–指定基础镜像LABEL作者信息USER切换运行属主身份WORKDUR切换工作目录ENV用于docker容器设置环境变量RUN用来执行命令行的命令COPY把宿主机文件复制到镜像中去ADD将文件路径复制添加到容器内部路径EXPOSE为容器打开指定要监听的…

uniApp实战四:网络请求封装

文章目录 1.最终效果预览2.请求封装3.创建config配置文件4.创建api请求5.页面调用 说明&#xff1a;当前笔记基于Vue3开发&#xff0c;HbuilderX版本4.66 1.最终效果预览 2.请求封装 在util/request.js下创建js文件&#xff0c;代码如下 import config from /configconst tim…

MCP协议全解:大模型时代的能力开放与服务集成最佳实践

一、MCP协议是什么&#xff1f; MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;是大模型和多智能体&#xff08;Agent&#xff09;生态中&#xff0c;用于标准化描述和传递上下文信息、能力开放、服务集成的协议。它的目标是让不同模型、Agent…

oracle 返回最新记录

在Oracle数据库中&#xff0c;如果你想获取一个表中基于某些条件的最新记录&#xff0c;通常有两种常见的方法&#xff1a;使用ROWID或者使用带有ORDER BY和ROWNUM的子查询。下面我将介绍这两种方法的基本用法。 方法1&#xff1a;使用ROWID 如果你的表有一个时间戳字段或者递…

华为云服务器:Can’t connect to MySql server on ‘localhost’(10060)

本地远程连接服务器数据库&#xff0c;提示10060 在 Ubuntu/Debian 系统中&#xff0c;检查 3306 端口是否开启需要从两个方面验证&#xff1a;MySQL 服务是否监听该端口以及防火墙是否允许外部访问该端口。以下是具体步骤&#xff1a; sudo ufw status查看到为开启mysql端口 …

利用Percona XtraDB Cluster搭建MySql高可用集群

引言拉取镜像创建单节点实例(一般在测试环境中使用)自定义网络(集群间相互隔离)映射数据目录创建docker-compose PXC容器用docker-compose启动PXC集群集群验证数据库负载均衡的必要性Haproxy负载均衡器部署故障排查引言 告别单点故障,拥抱持续可用——构建基于 Percona X…

Leetcode 3592. Inverse Coin Change

Leetcode 3592. Inverse Coin Change 1. 解题思路2. 代码实现 题目链接&#xff1a;3592. Inverse Coin Change 1. 解题思路 这一题的话思路上我们走的是一个贪婪算法的思路&#xff0c;即从小到大依次考察&#xff0c;显然&#xff0c;每一次当前最小的非零面额有且必有当前…

打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体

一、AI智能体的机遇与挑战 最近这两年全民AI热潮开始&#xff0c;各种智能体应用层出不穷。在AI智能体火热的当下&#xff0c;越来越多开发者想要构建自己的智能体&#xff0c;特别是垂直领域&#xff0c;需求更是旺盛。比如招聘助手、电商导购、财经分析师等等。从技术角度来…

嵌入式自学四十八天

时钟 cpu528MHz&#xff0c; PLL&#xff1a;锁相环电路 倍频功能&#xff1a;Fin*n Fout Prescale&#xff1a; 预分频器 降频 Fin/m Fout PFD&#xff1a;相位分子分频器 Fin *n/m Fout 时钟开了后&#xff0c;先到时钟根产生器&#xff0c;对时钟频率更改&…

光谱相机应对复杂环境条件的关键技术与方案

一、极端温度适应性‌ ‌主动温控系统‌ ‌半导体冷却&#xff08;TEC&#xff09;‌&#xff1a;维持探测器在5-40℃工作区间&#xff0c;防止高温噪声&#xff08;如SPECIM FX17&#xff09;。 ‌散热结构‌&#xff1a;铝合金外壳散热鳍片&#xff0c;工业级相机可在-10℃…

个人技术文档库构建实践:基于Cursor和GitHub的知识管理系统(含cursor rules)

技术选型 核心工具链 Cursor编辑器&#xff1a;AI辅助写作&#xff0c;智能补全和结构优化GitHub&#xff1a;版本控制、跨设备同步、团队协作Markdown&#xff1a;轻量级格式&#xff0c;跨平台兼容&#xff0c;与Git完美集成 与主流工具对比 选择CursorGitHub适合&#xf…

烟花爆竹生产企业库房存储安全风险预警系统

烟花爆竹生产企业库房存储安全风险预警系统是保障库房物资安全、规范作业流程、防范安全事故的重要技术手段&#xff0c;涵盖多个关键预警功能。​ 温湿度预警​ 在库房内安装温湿度传感器&#xff0c;这些传感器如同敏锐的“环境感知员”&#xff0c;能够实时监测库房内环境变…

LINUX 625 DNS域名管理系统

建安错题 根据《安全色》&#xff0c;红、黄、蓝、绿四种安全色各自传递着不同的安全含义和信息,其中表示要求人们必须遵守的规定的颜色是()。 根据《安全色》国家标准&#xff08;GB 2893-2008&#xff09;&#xff0c;四种安全色的含义如下&#xff1a; ​​红色​​&#…