【react】插件react-tsparticles和tsparticles实现粒子特效:

文章目录

        • 一、效果图:
        • 二、实现思路:
        • 三、实现代码:
            • 【1】安装依赖
            • 【2】


一、效果图:

在这里插入图片描述

二、实现思路:

particles(npm i react-particles-js)目前已被弃用;取代它的是tsparticles(npm i react-tsparticles 和npm install tsparticles)=>官网自己都不写参数的作用,离大谱
【官网地址】https://particles.js.org/和https://www.npmjs.com/package/react-tsparticles
在这里插入图片描述

三、实现代码:

【1】安装依赖
npm i react-tsparticles 
npm install tsparticles
【2】

在这里插入图片描述
在这里插入图片描述

import React from 'react'
//引入
import Particles from 'react-tsparticles'
import { loadFull } from "tsparticles";import { LockOutlined, UserOutlined } from '@ant-design/icons';
import { Button, Checkbox, Form, Input, message } from 'antd';import './Login.css'import axios from 'axios'//组件的最外层
const particlesInit = async (main) => {await loadFull(main);
};//粒子被正确加载到画布中时,这个函数被调用
const particlesLoaded = (container) => {console.log("123", container);
};export default function Login() {//粒子参数const options = {"background": {"color": {"value": "#232741"},"position": "50% 50%","repeat": "no-repeat","size": "cover"},// 帧数,越低越卡,默认60"fpsLimit": 120,"fullScreen": {"zIndex": 1},"interactivity": {"events": {"onClick": {"enable": true,"mode": "push"},"onHover": {"enable": true,"mode": "slow"}},"modes": {"push": {//点击是添加1个粒子"quantity": 3,},"bubble": {"distance": 200,"duration": 2,"opacity": 0.8,"size": 20,"divs": {"distance": 200,"duration": 0.4,"mix": false,"selectors": []}},"grab": {"distance": 400},//击退"repulse": {"divs": {//鼠标移动时排斥粒子的距离"distance": 200,//翻译是持续时间"duration": 0.4,"factor": 100,"speed": 1,"maxSpeed": 50,"easing": "ease-out-quad","selectors": []}},//缓慢移动"slow": {//移动速度"factor": 2,//影响范围"radius": 200,},//吸引"attract": {"distance": 200,"duration": 0.4,"easing": "ease-out-quad","factor": 3,"maxSpeed": 50,"speed": 1},}},//  粒子的参数"particles": {//粒子的颜色"color": {"value": "#ffffff"},//是否启动粒子碰撞"collisions": {"enable": true,},//粒子之间的线的参数"links": {"color": {"value": "#ffffff"},"distance": 150,"enable": true,"warp": true},"move": {"attract": {"rotate": {"x": 600,"y": 1200}},"enable": true,"outModes": {"bottom": "out","left": "out","right": "out","top": "out"},"speed": 6,"warp": true},"number": {"density": {"enable": true},//初始粒子数"value": 40},//透明度"opacity": {"value": 0.5,"animation": {"speed": 3,"minimumValue": 0.1}},//大小"size": {"random": {"enable": true},"value": {"min": 1,"max": 3},"animation": {"speed": 20,"minimumValue": 0.1}}}};const onFinish = (values) => {axios.get(`/users?username=${values.username}&password=${values.password}&roleState=true&_expand=role`).then(res => {console.log(res.data)if (res.data.length === 0) {message.error("用户名或密码不匹配")} else {localStorage.setItem("token", JSON.stringify(res.data[0]))// props.history.push("/")}})};return (<div style={{ height: '100%', overflow: 'hidden' }}><Particles id="tsparticles" init={particlesInit} loaded={particlesLoaded} options={options} /><Form name="normal_login" className="login-form" initialValues={{ remember: true, }} onFinish={onFinish}><Form.Item><h3 className="login-form-title">xxx系统</h3></Form.Item><Form.Item name="username" rules={[{ required: true, message: '请输入用户名!' }]}><Input prefix={<UserOutlined className="site-form-item-icon" />} placeholder="请输入用户名" /></Form.Item><Form.Item name="password" rules={[{ required: true, message: '请输入密码!' }]} ><Input prefix={<LockOutlined className="site-form-item-icon" />} type="password" placeholder="请输入密码" /></Form.Item><Form.Item><Form.Item name="remember" valuePropName="checked" noStyle><Checkbox>记住密码</Checkbox></Form.Item></Form.Item><Form.Item><Button type="primary" htmlType="submit" className="login-form-button">登录</Button></Form.Item></Form></div>)
}

在这里插入图片描述

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

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

相关文章

AI大数据智能视频融合平台EasyCVR新增Ehome黑白名单配置

EasyCVR视频融合平台基于云边端智能协同架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台支持海量视频汇聚管理&#xff0c;可支持多协议接入&#xff0c;包括市场主流标准协议与厂家私有协议及SDK&#xff0c;如&#xff1a;国标GB28181、RTMP、RTSP/Onvi…

Springboot启用HTTP响应压缩

官方文档:https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/htmlsingle/#how-to-enable-http-response-compression

【云原生】k8s之存储卷

容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重启它&#xff0c;但是容器中的文件将丢失——容器以干净的状态&#xff08;镜像最初的状态&#xff09;重新启动。其次&a…

VMware 17虚拟Ubuntu 22.04设置共享目录

之前使用VM 17之前的版本虚拟CentOS&#xff0c;设置共享目录非常方便&#xff0c;在CentOS中安装VMware Tools即可。随着CentOS变成上游版本后&#xff0c;转向使用Ubuntu&#xff0c;VM也升级到了17&#xff0c;Ubuntu也升级到了最新的22.04&#xff0c;但是发现共享目录不能…

缓存 - Caffeine 不完全指北

文章目录 官网概述设计CodePOMPopulationEviction PolicyRefreshStatistics 官网 https://github.com/ben-manes/caffeine wiki: https://github.com/ben-manes/caffeine/wiki 概述 Caffeine是一个用于Java应用程序的高性能缓存框架。它提供了一个强大且易于使用的缓存库&a…

Dynamsoft Barcode Reader crack

Dynamsoft Barcode Reader crack SDK经过重构&#xff0c;与DynamsoftCaptureVision(DCV)体系结构集成&#xff0c;该体系结构包括&#xff1a; ImageSourceAdapter(ISA)-标准输入接口&#xff0c;用于将来自不同来源的图像数据转换为标准输入图像数据。此外&#xff0c;ISA结合…

css,less,scss中的深度选择器,结合elementUi使用

css中深度选择器用到的是 >>>加类名 可以很方便的找到自己想要修改的样式 lees中用到 /deep/ 加类名 scss中用到::v-deep 加类名

0127 进程与线程1

目录 2.进程与线程 2.1进程与线程 2.1部分习题 2.2处理机调度 2.2部分习题 2.进程与线程 2.1进程与线程 2.1部分习题 1.一个进程的映像是&#xff08;&#xff09; A.由协处理器执行的一个程序 B.一个独立的程序数据集 C.PCB结构与程序和数据的组合 D.…

Python获取豆丁文档数据内容, 保存word文档

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 开发环境: python 3.8 pycharm 模块使用: requests --> pip install requests re base64 docx --> pip install python-docx 第三方模块安装方法&#xff1a; win R 输入cmd 输入安装命令 pip install …

软考A计划-系统集成项目管理工程师-项目进度管理-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

基于单片机停车场刷卡收费的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过液晶显示当前时间&#xff0c;车位、剩余车位、时间等信息&#xff1b;进电机正反转表示开关门&#xff1b;按键可以设置当前时间/单价/分钟&#xff1b;RC522射频卡识别&#xff0c;当刷卡后模拟汽车驶入&#xff0c;开始收费…

路径规划算法:基于爬行动物优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于爬行动物优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于爬行动物优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…