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

news2024/10/7 8:31:09

无偿下载地址: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.coloradmin.cn/o/1434299.html

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

相关文章

mac下载工具:JDownloader 2 for Mac 中文版

JDownloader是一款开源的下载管理工具&#xff0c;主要使用Java编程语言开发&#xff0c;因此它能够在支持Java的操作系统上运行&#xff0c;包括Windows、Linux和Mac OS。这款软件专门为那些需要通过网盘下载文件的用户提供便利&#xff0c;它支持众多流行的网盘服务&#xff…

2.STL源码解析-空间配置器

2.STL源码解析-空间配置器alloc 空间配置器就是给容器分配空间的。像我们平时使用new和delete动态分配释放对象内存一样。空间配置器也封装了这些功能。但是STL的空间配置器不仅仅只简单调用分配空间&#xff0c;它在一些地方都做了优化来提升性能。 构造和析构 我们在调用n…

AI工具有哪些?国内4款主流的AI软件盘点推荐!

去年以GPT为代表的AI对话软件&#xff0c;再一次引发了人们对人工智能的关注和讨论&#xff0c;从小博自己的观察看&#xff0c;人们对AI工具持有3种态度—— “看不懂”&#xff1a;AI工具是一种新事物&#xff0c;但和自己的工作或所在的行业无关&#xff0c;不想在这上面花…

【pikachu csrf】

cxrf 个人理解getPOST 个人理解 当被攻击用户登陆访问网站时&#xff0c;在保持登陆状态时点击小黑子&#xff08;黑客&#xff09;搭建的恶意链接而导致用户受到攻击。 举个例子 我去攻击网站&#xff0c;但是我找不到漏洞&#xff0c;这个时候我注册一个账号&#xff0c;发现…

Linux第42步_移植ST公司uboot的第3步_uboot命令测试,搭建nfs服务器和tftp服务器

测试uboot命令&#xff0c;搭建nfs服务器和tftp服务器&#xff0c;是测试uboot非常关键的一步。跳过这一节&#xff0c;后面可能要踩坑。 一、输入“help回车”&#xff0c;查询uboot所支持的命令 二、输入“? bootz回车”&#xff0c;查询“bootz”怎么用 注意&#xff1a;和…

如何利用大模型结合文本语义实现文本相似度分析?

常规的文本相似度计算有TF-IDF&#xff0c;Simhash、编辑距离等方式&#xff0c;但是常规的文本相似度计算方式仅仅能对文本表面相似度进行分析计算&#xff0c;并不能结合语义分析&#xff0c;而如果使用机器学习、深度学习的方式费时费力&#xff0c;效果也不一定能达到我们满…

Java与SpringBoot:实现高效车险理赔信息管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

学习python第六天

一.if - else if 后面的语句是当判断条件成立时&#xff0c;需要执行的操作。 else 后面的语句是判断条件不成立时&#xff0c;执行的操作。 yourScore 80 myScore 90if yourScore > myScore:print("你的得分比我高") else:print("你的得分不比我高"…

【数据结构与算法】(5)基础数据结构之队列 链表实现、环形数组实现详细代码示例讲解

目录 2.4 队列1) 概述2) 链表实现3) 环形数组实现 2.4 队列 1) 概述 计算机科学中&#xff0c;queue 是以顺序的方式维护的一组数据集合&#xff0c;在一端添加数据&#xff0c;从另一端移除数据。习惯来说&#xff0c;添加的一端称为尾&#xff0c;移除的一端称为头&#xf…

VR全景技术可以应用在哪些行业,VR全景技术有哪些优势

引言&#xff1a; VR全景技术&#xff08;Virtual Reality Panorama Technology&#xff09;是一种以虚拟现实技术为基础&#xff0c;通过360度全景影像、立体声音、交互元素等手段&#xff0c;创造出沉浸式的虚拟现实环境。该技术不仅在娱乐领域有着广泛应用&#xff0c;还可…

Python命令行工具库之argcomplete使用详解

概要 命令行工具是开发者和系统管理员的得力助手&#xff0c;但随着命令行选项的增多&#xff0c;用户可能会感到困惑。Python 中的 argcomplete 库可以帮助轻松地为命令行工具添加自动补全功能&#xff0c;提高用户体验。本文将介绍如何使用 Python argcomplete 库实现命令行…

【Matplotlib】figure方法 你真的会了吗!?

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;matplotlib &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

初始mach-o文件及在项目中应用

本文字数&#xff1a;2250字 预计阅读时间&#xff1a;15分钟 01 认识mach-o的必要性 了解mach-o的结构可以帮助认识系统加载二进制文件的动态链接和静态链接。应用层面&#xff0c;使用initialize的c函数计算启动时间耗时也需要以mach-o的结构知识为铺垫。还可以用在使用clang…

Stable Diffusion 模型下载:ReV Animated

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十下载地址模型介绍 该模型能够创建 2.5D 类图像生成。此模型是检查点合并,这意味着它是其他模型的产物,以创建从原始模型派生的产品。 条目内容类型大模型

【c/python】GtkGrid

一、GtkGrid GtkGrid 是 GTK (GIMP Toolkit) 中的一个基础容器构件&#xff08;widget&#xff09;&#xff0c;它可以用来安排其他构件在一个灵活的多行多列的网格中。每个加入网格的构件都可以占据一个或多个行和列。由于 GtkGrid 提供了在二维空间中安排构件的方式&#xf…

kvm qemu 优化 windows 虚拟机速度

主要优化磁盘 io 和网络 io 都选为 virtio windows 驱动下载 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.185-2/virtio-win-0.1.185.iso I also had incredibly slow performance with my virtual HDD. The followin…

【LeetCode】刷题总结 - 15. 三数之和

15. 三数之和 | LeetCode 思路 首先对 nums 进行排序&#xff0c;然后设置三个指针&#xff1a;left、mid、right&#xff1a; left 从最左边开始&#xff0c;依次向后遍历每次固定住 left 后&#xff0c;就化为一个 2sum 问题&#xff1a; mid left 1&#xff0c;right …

基于Java (spring-boot)的实验室管理系统

一、项目介绍 基于Java (spring-boot)的交通管理系统功能&#xff1a;注册登录、个人信息管理、驾驶证业务类型管理、机动车业务类型管理、新闻类型管理、违法处理业务类型管理、驾驶证业务管理、机动车业务管理、新闻管理、违法处理业务管理、用户管理。 二、作品包含 ​ 三、…

[软件工具]文档页数统计工具软件pdf统计页数word统计页数ppt统计页数图文打印店快速报价工具

文档页数统计工具软件——打印方面好帮手 在信息化时代&#xff0c;文档已成为我们工作、学习、生活中不可或缺的一部分。无论是学术论文、商业报告&#xff0c;还是个人日记&#xff0c;都需要我们对其进行有效的管理。而在这个过程中&#xff0c;文档页数统计工具软件就显得…

[office] 教你实现Excel中工作表重命名的诀窍 #知识分享#职场发展#其他

教你实现Excel中工作表重命名的诀窍 在Excel中要实现工作表的重命名其实不是难事&#xff0c;重在你要掌握技巧。一些初学者&#xff0c;可能还不是特别的懂。今天&#xff0c;小编就要一步步来教一下大家了。有两种方法&#xff0c;大家学好了。 方法一、打开excel表格&#x…