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
英文地址,請注明出處:http://en.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; ??紅色??&#…