web实现酷炫的canvas粒子动画背景

文章目录

  • 前言
  • 一、particle-bg
    • 1. git地址:
    • 2. 安装
    • 3. 使用
    • 4. 完整demo
  • 二、tsParticles
  • 1. 源码地址:
    • 2. 安装
    • 3. 引入
    • 4. 使用
    • 5. 几个例子
      • 5.1 ts粒子五彩纸屑烟花
      • 5.2 多粒子产卵器-用tsParticles制作
      • 5.3 ts粒子鼠标吸引力
      • 5.4 粒子烟花
  • 源码地址
  • 完结

前言

粒子动画,顾名思义,就是页面上存在大量的粒子构建而成的动画。

传统的粒子动画主要由 Canvas、WebGL 实现,我们经常用来用作网站的动画背景。

今天介绍两个个可以轻松创建高度可定制的粒子动画库。

一、particle-bg

1. git地址:

https://github.com/PengJiyuan/particle-bg

不带连线效果:
在这里插入图片描述
带连线的效果:
在这里插入图片描述

2. 安装

NPM

npm i particle-bg

CDN

https://unpkg.com/particle-bg/lib/particle-bg.umd.min.js

3. 使用

ES Module

import particleBg from 'particle-bg';particleBg('body');

Browser

<script src="https://unpkg.com/particle-bg/lib/particle-bg.umd.min.js"></script>
<script>particleBg('body');
</script>

API

particleBg(element, config)element
要插入粒子背景的DOM。config [Object]
粒子背景的一些配置。config.color
default: '#fff'
粒子的颜色。config.count
default: 100
粒子的数量config.radius
default: 2
粒子的半径config.distance
default: width / 10
粒子间距小于多少会连线config.rate
default: width / 10000
粒子运动的速率config.zIndex
default: 1
canvas的z-index.config.resize
default: true
是否监听window.resize,自动缩放粒子背景。config.line
default: true
粒子之间是否连线。config.bounce
default: false
是否触碰边界进行反弹。

4. 完整demo

<div style="width: 100%;height: 200px;background-color: rgb(109, 108, 106);" id="Bg"></div>
<script src="https://unpkg.com/particle-bg/lib/particle-bg.umd.min.js"></script>
<script>particleBg('#Bg', {color: '#fff',count: 100,radius: 2,distance: 70,rate:1,zIndex: 1,resize: true,line: true,bounce: true,});
</script>

效果
在这里插入图片描述

二、tsParticles

TypeScript Particles 是在 particles.js 基础上重写的一个库,目的是更容易地创建更多的背景动画,并提供更多的实用程序和支持功能。

这个库最大的亮点在于它可以用于许多不同的框架,例如 React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery等等JS框架、Web组件。

1. 源码地址:

GitHub地址:https://github.com/matteobruni/tsparticles

官网地址:https://particles.js.org/

更多demo地址:https://codepen.io/collection/DPOage

2. 安装

npm

npm install tsparticles-engine

yarn

yarn add tsparticles-engine

pnpm

pnpm install tsparticles-engine

3. 引入

从版本1.12.11开始使用import和require导入tsParticles了。

const tsParticles = require("tsparticles-engine");
// or
import { tsParticles } from "tsparticles-engine";

4. 使用

index.html

<div id="tsparticles"></div><script src="tsparticles.engine.min.js"></script>

app.js

tsParticles.loadJSON("tsparticles", "presets/default.json").then(container => {console.log("callback - tsparticles config loaded");}).catch(error => {console.error(error);});

5. 几个例子

5.1 ts粒子五彩纸屑烟花

<script src="https://cdn.jsdelivr.net/npm/tsparticles-confetti@2.11.0/tsparticles.confetti.bundle.min.js"></script>
<script id="rendered-js">const duration = 60 * 60 * 1000,animationEnd = Date.now() + duration,defaults = { startVelocity: 30, spread: 360, ticks: 20, zIndex: 0 };function randomInRange(min, max) {return Math.random() * (max - min) + min;}const interval = setInterval(function () {const timeLeft = animationEnd - Date.now();if (timeLeft <= 0) {return clearInterval(interval);}const particleCount = 20 * (timeLeft / duration);// since particles fall down, start a bit higher than randomconfetti(Object.assign({}, defaults, {particleCount,origin: { x: randomInRange(0.1, 0.3), y: Math.random() - 0.2 }}));confetti(Object.assign({}, defaults, {particleCount,origin: { x: randomInRange(0.7, 0.9), y: Math.random() - 0.2 }}));}, 250);
</script>

效果
在这里插入图片描述

5.2 多粒子产卵器-用tsParticles制作

<div style="width: 100%;height: 200px;background-color: rgb(109, 108, 106);" id="tsparticles"></div><script src="https://cdn.jsdelivr.net/npm/tsparticles@1.19.0-alpha.3/dist/tsparticles.min.js"></script>
<script id="rendered-js">tsParticles.load("tsparticles", {fpsLimit: 60,particles: {number: {value: 0,density: {enable: true,value_area: 800}},color: {value: "#ffff00"},shape: {type: "circle"},opacity: {value: 1,random: false,animation: {enable: true,speed: 0.5,minimumValue: 0,sync: false}},size: {value: 8,random: { enable: true, minimumValue: 4 },animation: {enable: false,speed: 20,minimumValue: 4,sync: false}},move: {enable: true,gravity: {enable: true,acceleration: -0.5},speed: 5,direction: "top",random: false,straight: false,outModes: {default: "destroy",bottom: "none"},attract: {enable: true,distance: 300,rotate: {x: 600,y: 1200}}}},interactivity: {detectsOn: "canvas",events: {resize: true}},detectRetina: true,background: {color: "#000000"},emitters: [{direction: "top",particles: {color: "#f00"},rate: {quantity: 1,delay: 0.1},size: {width: 100,height: 10},position: {x: 50,y: 100}},{direction: "top",particles: {color: "#0f0"},rate: {quantity: 1,delay: 0.1},size: {width: 100,height: 10},position: {x: 50,y: 100}}]});//# sourceURL=pen.js
</script>

效果
在这里插入图片描述

5.3 ts粒子鼠标吸引力

<div style="width: 100%;height: 200px;background-color: rgb(109, 108, 106);" id="tsparticles1"></div><script src="https://cdn.jsdelivr.net/npm/tsparticles@1.37.4/tsparticles.min.js"></script>
<script id="rendered-js">tsParticles.load("tsparticles1", {fps_limit: 60,interactivity: {detect_on: "canvas",events: {onclick: { enable: true, mode: "push" },onhover: {enable: true,mode: "attract",parallax: { enable: false, force: 60, smooth: 10 }},resize: true},modes: {push: { quantity: 4 },attract: { distance: 200, duration: 0.4, factor: 5 }}},particles: {color: { value: "#ffffff" },line_linked: {color: "#ffffff",distance: 150,enable: true,opacity: 0.4,width: 1},move: {attract: { enable: false, rotateX: 600, rotateY: 1200 },bounce: false,direction: "none",enable: true,out_mode: "out",random: false,speed: 2,straight: false},number: { density: { enable: true, value_area: 800 }, value: 80 },opacity: {anim: { enable: false, opacity_min: 0.1, speed: 1, sync: false },random: false,value: 0.5},shape: {character: {fill: false,font: "Verdana",style: "",value: "*",weight: "400"},image: {height: 100,replace_color: true,src: "images/github.svg",width: 100},polygon: { nb_sides: 5 },stroke: { color: "#000000", width: 0 },type: "circle"},size: {anim: { enable: false, size_min: 0.1, speed: 40, sync: false },random: true,value: 5}},polygon: {draw: { enable: false, lineColor: "#ffffff", lineWidth: 0.5 },move: { radius: 10 },scale: 1,type: "none",url: ""},retina_detect: true});
</script>

效果
在这里插入图片描述

5.4 粒子烟花

<script src="https://cdn.jsdelivr.net/npm/tsparticles-fireworks@2.11.0/tsparticles.fireworks.bundle.min.js"></script>
<script id="rendered-js">fireworks();</script>

效果
在这里插入图片描述

源码地址

https://gitcode.net/my12/particle

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,于是最近才开始自习unity。如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我可能也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

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

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

相关文章

【制作npm包5】npm包制作完整教程,我的第一个npm包

制作npm包目录 本文是系列文章&#xff0c; 作者一个橙子pro&#xff0c;本系列文章大纲如下。转载或者商业修改必须注明文章出处 一、申请npm账号、个人包和组织包区别 二、了解 package.json 相关配置 三、 了解 tsconfig.json 相关配置 四、 api-extractor 学习 五、npm包…

macOS(m1/m2)破解Sublime Text和Navicat16

破解Sublime Text 说明&#xff1a;全程使用的是终端操作 1. 下载Sublime Text&#xff0c;建议使用brew下载 2. 进入到下载的app的文件夹 cd "/Applications/Sublime Text.app/Contents/MacOS/"3. 执行以下操作以确认版本是否匹配 md5 -q sublime_text | grep -i…

Git 目录详解

一、Git目录详解 在使用Git时&#xff0c;有几个目录和文件在Git项目中扮演着重要的角色&#xff0c;下面详细介绍一下这些目录和文件的作用 1、.git目录 .git目录是Git项目的核心&#xff0c;包含了Git的版本库和元数据等重要信息。在该目录中&#xff0c;有一些重要的子目录和…

Maven之mirrorof范围

mirrorOf 是 central 还是 * 的问题 在配置阿里对官方中央仓库的镜像服务器时&#xff0c;我们使用到了 <mirror> 元素。 <mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>…

idea格式化日志打印

Live Template 需要在Live Templates里面创建一个模板组为MyTemplate 触发时机选择java 1、创建一个loge log.error($content$,$params$); content groovyScript("def params _3.collect {【it {}】}.join(, ); return \" _1 . _2 () exception > (params…

CentOS8安装Git

错误1. 执行yum命令报错 【错误&#xff1a;Invalid configuration value: failovermethodpriority in /etc/yum.repos.d/CentOS-epel.repo; 配置&#xff1a;ID 为 "failovermethod" 的 OptionBinding 不存在】 1.cd /etc/yum.repos.d 2.vim CentOS-epel.repo //…

【uniapp】中 微信小程序实现echarts图表组件的封装

插件地址&#xff1a;echarts-for-uniapp - DCloud 插件市场 图例&#xff1a; 一、uniapp 安装 npm i uniapp-echarts --save 二、文件夹操作 将 node_modules 下的 uniapp-echarts 文件夹复制到 components 文件夹下 当前不操作此步骤的话&#xff0c;运行 -> 运行到小…

vue实现可缩放拖拽盒子(亲测可用)

特征 没有依赖 使用可拖动&#xff0c;可调整大小或两者兼备定义用于调整大小的句柄限制大小和移动到父元素或自定义选择器将元素捕捉到自定义网格将拖动限制为垂直或水平轴保持纵横比启用触控功能使用自己的样式为句柄提供自己的样式 安装和基本用法 npm install --save vue-d…

【QT】 Word模板编辑、转PDF格式

很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享基于QT进行Word模板编辑以及Word转PDF的技术,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录 …

排污口水质的在线监测,实时掌握排口水质助力生态治理

水是生命之源&#xff0c;良好的水生态环境是社会发展的必然要求。然而随着工业化和城市化的发展&#xff0c;人类面临空气和水环境污染等严峻挑战&#xff0c;其中水环境问题尤为突出。排污成为城市和工业生产过程中不可避免的环保问题。 为加快解决生态环境突出问题&#xff…

小黑day5那拉提空中草原上午因下雨关闭改去河谷草原,下午薰衣草基地,入住伊宁江苏酒店附近吃当地特色羊肉串的leetcode之旅:209. 长度最小的子数组

小黑代码 class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:# 数组长度n len(nums)# 定义双指针head 0tail 0# 中间变量sum_ 0# 结果变量min_ n 1# 开始迭代 while head < n:# 尾部指针右移while tail < n and sum_ < target…

有一种新型病毒在 3Ds Max 环境中传播,如何避免?

3ds Max渲染慢&#xff0c;可以使用渲云渲染农场&#xff1a; 渲云渲染农场解决本地渲染慢、电脑配置不足、紧急项目渲染等问题&#xff0c;可批量渲染&#xff0c;批量出结果&#xff0c;速度快&#xff0c;效率高。 此外3dmax支持的CG MAGIC插件专业版正式上线&#xff0c;…

【内网穿透】如何实现在外web浏览器远程访问jupyter notebook服务器

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#xff0c;如…

C++ 面向对象三大特性——继承

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C 继承 ☂️<3>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;面向对象三大特性的&#xff0c;封装&#xff0c;继承&#xff0c;多态&#xff…

arcgis pro3.0-3.0.1-3.0.2安装教程大全及安装包下载

一. 产品介绍&#xff1a; ArcGIS Pro 这一功能强大的单桌面 GIS 应用程序是一款功能丰富的软件&#xff0c;采用 ArcGIS Pro 用户社区提供的增强功能和创意进行开发。 ArcGIS Pro 支持 2D、3D 和 4D 模式下的数据可视化、高级分析和权威数据维护。 支持通过 Web GIS 在一系列 …

【探索Linux】—— 强大的命令行工具 P.4(编译器 gcc/g++ 使用)

阅读导航 前言一、编译的四大过程&#xff08;背景知识&#xff09;1. 预处理&#xff08;Preprocessing&#xff09;2. 编译&#xff08;Compilation&#xff09;3. 汇编&#xff08;Assembly&#xff09;4. 链接&#xff08;Linking&#xff09; 二、gcc的使用1. 概念2. gcc主…

MySQL 约束

查看约束 select * from information_schema.table_constraints where table_name要查看的表名按约束的作用范围 列级约束&#xff1a; 将此约束声明在对应字段的后面 表级约束&#xff1a;在表中所有字段都声明完&#xff0c;在所有字段的后面声明的约束&#xff0c;可以声明…

对比学习论文综述总结

第一阶段:百花齐放(18-19中) 有InstDisc(Instance Discrimination)、CPC、CMC代表工作。在这个阶段方法模型都还没有统一,目标函数也没有统一,代理任务也没有统一,所以说是一个百花齐放的时代 1 判别式代理任务---个体判别任务 1.1 Inst Dict---一个编码器+一个memory…

【深度学习 | 梯度那些事】 梯度爆炸或消失导致的模型收敛困难?挑战与解决方案一览, 确定不来看看?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

考虑分布式电源的配电网无功优化问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…