【网页设计】春节页面背景模板

无偿下载地址:https://download.csdn.net/download/weixin_47040861/88811143


1.实现效果

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><link rel="stylesheet" href="index.css">
</head><body><img src="./image/鞭炮.gif" class="gifL"><img src="./image/鞭炮.gif" class="gifR"><canvas id="canvas"></canvas><div class="middle"></div></body></html><script src="./index.js"></script>

2.css

*{margin: 0;padding: 0;
}
html,body{height: 100%;
}
body{background-image: url(./image/bg.png);background-size: 100% 100%;
}
.gifL,.gifR{position: absolute;height: 100vh;
}
.gifR{right: 0;
}
#canvas{position: absolute;z-index: -1;
}
.middle{height: 100vh;width: 100vh;margin: 0 auto;position: relative;text-align: center;background-color: rgb(255, 255, 255,0.5);/*颜色*/
}

3.JavaScript

window.addEventListener("resize", resizeCanvas, false);window.addEventListener("DOMContentLoaded", onLoad, false);window.requestAnimationFrame =window.requestAnimationFrame ||window.webkitRequestAnimationFrame ||window.mozRequestAnimationFrame ||window.oRequestAnimationFrame ||window.msRequestAnimationFrame ||function (callback) {window.setTimeout(callback, 1000 / 60);};var canvas, ctx, w, h, particles = [], probability = 0.02,xPoint, yPoint;function onLoad() {canvas = document.getElementById("canvas");ctx = canvas.getContext("2d");resizeCanvas();drawBackgroundImage();window.requestAnimationFrame(updateWorld);}function resizeCanvas() {if (!!canvas) {w = canvas.width = window.innerWidth;h = canvas.height = window.innerHeight;}}function updateWorld() {update();paint();window.requestAnimationFrame(updateWorld);}function update() {if (particles.length < 500 && Math.random() < probability) {createFirework();}var alive = [];for (var i = 0; i < particles.length; i++) {if (particles[i].move()) {alive.push(particles[i]);}}particles = alive;}function paint() {ctx.globalCompositeOperation = 'source-over';ctx.clearRect(0, 0, w, h);drawBackgroundImage();ctx.globalCompositeOperation = 'lighter';for (var i = 0; i < particles.length; i++) {particles[i].draw(ctx);}}function drawBackgroundImage() {var backgroundImage = new Image();backgroundImage.src = 'image/bg.png';ctx.drawImage(backgroundImage, 0, 0, w, h);}function createFirework() {xPoint = Math.random() * (w - 200) + 100;yPoint = Math.random() * (h - 200) + 100;var nFire = Math.random() * 50 + 100;var c = "rgb(" + (~~(Math.random() * 200 + 55)) + ","+ (~~(Math.random() * 200 + 55)) + "," + (~~(Math.random() * 200 + 55)) + ")";for (var i = 0; i < nFire; i++) {var particle = new Particle();particle.color = c;var vy = Math.sqrt(25 - particle.vx * particle.vx);if (Math.abs(particle.vy) > vy) {particle.vy = particle.vy > 0 ? vy : -vy;}particles.push(particle);}}function Particle() {this.w = this.h = Math.random() * 4 + 1;this.x = xPoint - this.w / 2;this.y = yPoint - this.h / 2;this.vx = (Math.random() - 0.5) * 10;this.vy = (Math.random() - 0.5) * 10;this.alpha = Math.random() * .5 + .5;this.color;}Particle.prototype = {gravity: 0.05,move: function () {this.x += this.vx;this.vy += this.gravity;this.y += this.vy;this.alpha -= 0.01;if (this.x <= -this.w || this.x >= screen.width ||this.y >= screen.height ||this.alpha <= 0) {return false;}return true;},draw: function (c) {c.save();c.beginPath();c.translate(this.x + this.w / 2, this.y + this.h / 2);c.arc(0, 0, this.w, 0, Math.PI * 2);c.fillStyle = this.color;c.globalAlpha = this.alpha;c.closePath();c.fill();c.restore();}} 

3.介绍

HTML结构:

定义了两个img标签显示两串鞭炮,canvas标签显示背景图片和烟花效果,在div标签middle中可以添加内容。

JavaScript部分:

  • 通过事件监听器,在窗口大小变化和文档加载完成时分别触发 resizeCanvasonLoad 函数。
  • 创建全局变量 canvasctxwhparticlesprobabilityxPointyPoint 用于Canvas的绘制和动画控制。
  • resizeCanvas 函数在窗口大小变化时调整Canvas的大小。
  • onLoad 函数在文档加载完成后初始化Canvas并调用 updateWorld 函数开始动画。
  • updateWorld 函数是主循环,负责更新和绘制Canvas中的粒子。
  • update 函数用于更新粒子数组。
  • paint 函数负责清除画布并绘制背景图片以及粒子效果。
  • drawBackgroundImage 函数加载并绘制背景图片。
  • createFirework 函数创建烟花,随机生成烟花的位置、颜色和数量。
  • Particle 构造函数创建粒子对象,包含粒子的大小、位置、速度、透明度和颜色。
  • Particle 原型对象包含 gravity 属性和 movedraw 方法,用于更新粒子的位置和绘制粒子。

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

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

相关文章

Logback - 日志框架

引言 在当今的企业级应用开发中&#xff0c;日志管理是一个不可或缺的部分。它不仅帮助我们进行错误跟踪&#xff0c;还能有效监控应用程序的运行状态&#xff0c;为性能优化提供数据支撑。Spring Boot作为一个简化Spring应用开发的框架&#xff0c;自带了强大的日志管理功能。…

算法练习-三数之和(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨在…

类型化数组

数字存储前置知识 计算机必须使用固定的位数来存储数字&#xff0c;无论存储的数字是大是小&#xff0c;在内存中占用的空间是固定的n位的无符号整数能表示的个数是2^n个 取值范围是0~2^n-1 举例&#xff1a;000 001 111 表示[0-8]n位的有符号整数能表示的个数是2^n个 取值范围…

【动态规划】【子数组划分】【前缀和】1977. 划分数字的方案数

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1977 划分数字的方案数 你写下了若干 正整数 &#xff0c;并将它们…

前端vite+vue3——自动化配置路由布局

文章目录 ⭐前言&#x1f496;vue3系列文章 ⭐ 自动化配置路由&#x1f496;引入vite版本自定义目录映射&#x1f496;自动化读取文件下的路由&#x1f496;main入口加载路由&#x1f496;入口app.vue配置&#x1f496;layout基础布局配置&#x1f496;效果 ⭐总结⭐结束 ⭐前言…

解锁售前新效能:AI助手使用的三点建议

1.售前工作概述 自从阴差阳错从技术实施转做售前到现在也有10多年时间&#xff0c;与技术实施仅负责设备安装调试、用户使用培训以及售后维护等被动工作不同。售前更多的是针对用户的主动性工作&#xff0c;包括需求调研与分析、技术沟通与咨询、方案设计与制定、方案演示与讲…

PdfFactory Pro软件下载以及序列号注册码生成器

PdfFactory Pro注册机是一款针对同名虚拟打印机软件所推出的用户名和序列号生成器。PdfFactory Pro是一款非常专业的PDF虚拟打印软件&#xff0c;通过使用这款注册机&#xff0c;就能帮助用户免费获取注册码&#xff0c;一键激活&#xff0c;永久免费使用。 pdffactory7注册码如…

数据库管理-第146期 最强Oracle监控EMCC深入使用-03(20240206)

数据库管理145期 2024-02-06 数据库管理-第146期 最强Oracle监控EMCC深入使用-03&#xff08;20240206&#xff09;1 概览2 性能中心3 性能中心-Exadata总结 数据库管理-第146期 最强Oracle监控EMCC深入使用-03&#xff08;20240206&#xff09; 作者&#xff1a;胖头鱼的鱼缸&…

RabiitMQ延迟队列(死信交换机)

Dead Letter Exchange&#xff08;死信交换机&#xff09; 在MQ中&#xff0c;当消息成为死信&#xff08;Dead message 死掉的信息&#xff09;后&#xff0c;消息中间件可以将其从当前队列发送到另一个队列中&#xff0c;这个队列就是死信队列。而 在RabbitMQ中&#xff0c;由…

IS-IS weight影响路由加表

拓扑图 配置 nexthop weight影响路由加入路由表 weight默认为255&#xff0c;取值1~255&#xff0c;值越小越优先 sysname R1 # isis 1is-level level-1cost-style widenetwork-entity 49.1234.0000.0000.0001.00log-peer-change topology # interface GigabitEthernet0/0/0…

003集——通过VBA将二进制文件转为文本文件

对于二进制的文件&#xff0c;我们可以通过vba代码转为文本文件。这里以dxf为例&#xff0c; 代码如下&#xff1a; Sub ConvertBinaryToText()Dim fs As Object FileSystemObjectSet fs CreateObject("Scripting.FileSystemObject")Dim binaryFilePath As Strin…

Java算法练习5

Java算法练习5 1.8 [268. 丢失的数字](https://leetcode.cn/problems/missing-number/)1.9 [383. 赎金信](https://leetcode.cn/problems/ransom-note/)1.10 [2133. 检查是否每一行每一列都包含全部整数](https://leetcode.cn/problems/check-if-every-row-and-column-contains…