用 HTML5 Canvas 和 JavaScript 實現流星雨特效

最近在研究前端動畫效果時,實現了一個超酷的流星雨特效,今天來和大家分享下具體實現過程。

1,整體實現思路

這個流星雨特效主要由 HTML、CSS 和 JavaScript 協同完成。HTML 搭建基礎結構,CSS 負責頁面樣式設計,JavaScript 實現星星和流星的動態效果。
效果展示:

用 HTML5 Canvas 和 JavaScript 實現流星雨特效

2,關鍵代碼解析

2.1 HTML 結構

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>流星雨特效</title><style>/* 省略CSS代碼 */</style>
</head><body><button id="fullscreenButton">全屏</button><canvas id="meteorCanvas"></canvas><audio id="backgroundMusic" loop><source src="background.mp3" type="audio/mpeg">Your browser does not support the audio element.</audio><script>/* 省略JavaScript代碼 */</script>
</body></html>

這里定義了一個全屏按鈕、用于繪制動畫的canvas畫布以及播放背景音樂的audio標簽。

2.2 CSS 樣式

body,
html {margin: 0;padding: 0;overflow: hidden;height: 100%;background: linear-gradient(to bottom, #000011, #000033);
}canvas {display: block;
}#fullscreenButton {position: absolute;bottom: 10px;right: 10px;z-index: 1000;padding: 5px 10px;background-color: rgba(255, 255, 255, 0.4);border: none;cursor: pointer;
}

通過 CSS 設置漸變背景模擬夜空,同時對canvas和按鈕的樣式進行布局,按鈕在右下角且有半透明背景。

2.3 JavaScript 核心邏輯

2.3.1 畫布設置

const canvas = document.getElementById("meteorCanvas");
const ctx = canvas.getContext("2d");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

獲取canvas元素及其繪圖上下文,并設置畫布尺寸與窗口一致。

2.3.2 星星類

class Star {constructor() {this.init();}init() {this.x = Math.random() * canvas.width;this.y = Math.random() * canvas.height;this.size = Math.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65242.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65242.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI中的神經元與權重矩陣之間的關系;神經元連接角度看行和列的意義

AI中的神經元與權重矩陣之間的關系 目錄 AI中的神經元與權重矩陣之間的關系神經元連接角度看行和列的意義AI中的神經元概念 在人工智能領域,特別是神經網絡中,神經元是基本的計算單元,它是對生物神經元的一種抽象模擬。就像生物神經元接收來自其他神經元的電信號,經過處理后…

Visual studio code編寫簡單記事本exe筆記

安裝擴展cmake tools c/c c/c Extension pack CMakeLists.txt cmake_minimum_required(VERSION 3.20) project(NotepadApp)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)# Windows specific settings if(WIN32)set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)s…

Linux 35.6 + JetPack v5.1.4之編譯 pytorch升級

Linux 35.6 JetPack v5.1.4之編譯 pytorch升級 1. 源由2. 升級步驟1&#xff1a;獲取二進制版本步驟2&#xff1a;安裝二進制版本步驟3&#xff1a;獲取torchvision步驟4&#xff1a;安裝torchvision步驟5&#xff1a;檢查安裝版本 3. 使用4. 補充4.1 torchvision版本問題4.2 …

計算機網絡--根據IP地址和路由表計算下一跳

一、必備知識 1.無分類地址IPV4地址網絡前綴主機號 2.每個IPV4地址由32位二進制數組成 3. /15這個地址表示網絡前綴有15位&#xff0c;那么主機號32-1517位。 4.地址掩碼&#xff08;子網掩碼&#xff09;&#xff1a;所對應的網絡前綴為1&#xff0c;主機號為0。 5.計算下…

歐幾里得算法(簡單理解版,非嚴格證明)

歐幾里得算法用于求解兩個整數的最大公約數&#xff0c;又稱為輾轉相除 依據的基本定理&#xff1a; GCD(a,b)GCD(a%b,b) 證明&#xff1a; 對于搞理論的人可能需要會嚴格證明&#xff0c;但是對于我們一般人而言&#xff0c;只要能理解其原理并記住即可&#xff0c;后者實際上…

插入式微型機頂盒來了

快科技1月6日消息&#xff0c;據國家廣播電視總局今日消息&#xff0c;國家廣播電視總局為首款以插入式微型機頂盒品類通過入網檢測的設備頒發了入網認定證書。 這是插入式微型機頂盒批量部署進程中的又一大進展。同時&#xff0c;廣播電視科學研究院依據行業標準建成了插入式…

lamda表達式

提示&#xff1a;文章 文章目錄 前言一、背景在使用lambda的時候&#xff0c;有幾個參數是可以直接省略的&#xff1a; 二、題目問題探究 總結 前言 前期疑問&#xff1a; 本文目標&#xff1a; lamda表達式 一、背景 看c科二的時候有看到lamda表達式&#xff0c;就再次看了…

XXL-RPC v1.8.1 | RPC服務框架

Release Notes 1、【安全】序列化安全性增強&#xff0c;默認開啟package安全空間機制&#xff1b;2、【擴展】序列化擴展性增強&#xff0c;支持自定義序列化package白名單&#xff1b;3、【優化】序列化類型主動檢測&#xff0c;提升問題定位效率&#xff1b;4、【能力】服務…

前端路由layout布局處理以及菜單交互(三)

上篇介紹了前端項目部署以及基本依賴的應用&#xff0c;這次主要對于路由以及布局進行模塊化處理 一、 創建layout模塊 1、新建src/layout/index.vue <template><el-container class"common-layout"><!-- <el-aside class"aside">&l…

Spring Boot(4)使用 IDEA 搭建 Spring Boot+MyBatis 項目全流程實戰

文章目錄 一、?搞個引言二、?開始搭建 Spring Boot 項目吧&#xff01;2.1 啟動 IDEA 并創建新項目2.2 選擇項目依賴2.3 完成項目創建 三、&#x1f4d8;項目結構剖析四、?配置數據庫連接五、? 創建 MyBatis 相關組件5.1 實體類&#xff08;Entity&#xff09;5.2 Mapper 接…

使用wujie搭建微前端應用及踩坑

線上演示地址&#xff1a;wujie-app 源碼地址&#xff1a;https://github.com/Jiang-K-J/micro-app?tabreadme-ov-file &#xff08;如果覺您得有用&#xff0c;請幫忙點個小星星&#xff09; 主應用&#xff1a;vue2webpack 子應用&#xff1a;vue3vite 子應用&#xff1…

【數據可視化-11】全國大學數據可視化分析

&#x1f9d1; 博主簡介&#xff1a;曾任某智慧城市類企業算法總監&#xff0c;目前在美國市場的物流公司從事高級算法工程師一職&#xff0c;深耕人工智能領域&#xff0c;精通python數據挖掘、可視化、機器學習等&#xff0c;發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

141.《mac m1安裝mongodb詳細教程》

文章目錄 下載從官網下載安裝包 下載后雙擊解壓出文件夾安裝文件名修改為 mongodb配置data存放位置和日志log的存放位置啟動方式一方式二方式二:輸入mongo報錯以及解決辦法 本人電腦 m2 pro,屬于 arm 架構 下載 官網地址: mongodb官網 怎么查看自己電腦應該下載哪個版本,輸入…

frameworks 之 Winscope 工具

frameworks 之 Winscope 工具 1. 手機端開啟2. 加載追蹤的文件2.1 Android12 3. 分析文件 Winscope 是一款 Web 工具&#xff0c;可以讓用戶在動畫和轉換期間和之后記錄、重放和分析多個系統服務的狀態。Winscope 將所有相關的系統服務狀態記錄在一個跟蹤文件中。使用帶有跟蹤文…

在日期字段中自動插入斜杠“/”的最佳方法是什么

我正在嘗試向輸入日期字段添加功能&#xff0c;以便當用戶輸入數字時&#xff0c;自動添加斜杠“/”。 所以假設我有以下 html&#xff1a; <input type"text" id"fooDate" />假設我有以下 javascript&#xff1a; var dateField document.getElem…

極限學習機 (Extreme Learning Machine, ELM) 算法詳解與PyTorch實現

極限學習機 (Extreme Learning Machine, ELM) 算法詳解與PyTorch實現 目錄 極限學習機 (Extreme Learning Machine, ELM) 算法詳解與PyTorch實現1. 極限學習機 (ELM) 算法概述1.1 單隱層前饋神經網絡1.2 ELM的優勢2. ELM的核心技術2.1 模型定義2.2 隨機初始化2.3 最小二乘法2.4…

【姿態估計實戰】使用OpenCV和Mediapipe構建鍛煉跟蹤器【附完整源碼與詳細說明】

《------往期經典推薦------》 一、AI應用軟件開發實戰專欄【鏈接】 項目名稱項目名稱1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】7.【…

nvm如何安裝

一、簡介 在實際的開發和學習中可能會遇到不同項目的 node 版本不同&#xff0c;而出現的兼容性問題。 而 nvm 就可以很好的解決這個問題&#xff0c;它可以在同一臺機器上下管理多個 node 版本&#xff0c;使得程序員可以輕松地安裝、卸載和切換不同的 node 版本。 在下載和配…

cityhash–對字符串的哈希算法

原文地址&#xff1a;cityhash–對字符串的哈希算法 – 無敵牛 歡迎參觀我的個人博客&#xff1a;無敵牛 – 技術/著作/典籍/分享等 分享一個給字符串計算hash的開源庫&#xff0c;谷歌出品。 源代碼在&#xff1a;https://github.com/google/cityhash 可以自己下載&#x…