首页 > 其他分享 >在react中使用Particles

在react中使用Particles

时间:2024-07-31 13:06:26浏览次数:12  
标签:Particles 粒子 启用 ParticleBackground react 使用 import true

step one

首先封装一个粒子效果组件,option各项配置在tsparticles/react 有介绍。

// ParticleBackground.js
import React, { useEffect, useState } from "react";
import { loadSlim } from "@tsparticles/slim";
import Particles, { initParticlesEngine } from "@tsparticles/react";

const ParticleBackground = React.memo(() => {
  const [init, setInit] = useState(false);

  const particlesOptions = {
    background: {
      color: {
        value: "FFB6C1", // 背景颜色设置
      },
    },
    fpsLimit: 120, // 每秒帧数限制为120fps
    interactivity: {
      events: {
        onClick: {
          enable: true, // 启用点击事件
          mode: "push", // 点击时推送粒子
        },
        onHover: {
          enable: true, // 启用悬停事件
          mode: "repulse", // 悬停时排斥粒子
        },
        resize: true, // 启用窗口大小调整事件
      },
      modes: {
        push: {
          quantity: 2, // 点击时添加的粒子数量
        },
        repulse: {
          distance: 80, // 悬停时排斥粒子的距离
          duration: 0.4, // 悬停排斥效果的持续时间
        },
      },
    },
    particles: {
      color: {
        value: "#ffffff", // 粒子颜色为白色
      },
      links: {
        color: "#ffffff", // 粒子连线颜色为白色
        distance: 150, // 粒子连线的最大距离
        enable: true, // 启用粒子连线
        opacity: 0.5, // 粒子连线透明度
        width: 1, // 粒子连线宽度
      },
      move: {
        direction: "none", // 粒子移动方向
        enable: true, // 启用粒子移动
        outModes: {
          default: "bounce", // 粒子碰到边界时反弹
        },
        random: true, // 粒子随机移动
        speed: 2.5, // 粒子移动速度
        straight: false, // 粒子不沿直线移动
      },
      number: {
        density: {
          enable: true, // 启用粒子密度计算
          area: 800, // 粒子活动区域面积
        },
        value: 180, // 粒子数量
      },
      opacity: {
        value: 0.5, // 粒子透明度
      },
      shape: {
        type: "circle", // 粒子形状为圆形
      },
      size: {
        value: { min: 1, max: 5 }, // 粒子大小范围
      },
    },
    detectRetina: true, // 启用视网膜屏优化
  };

  // 使用useEffect钩子初始化粒子效果引擎
  useEffect(() => {
    initParticlesEngine(async (engine) => {
      await loadSlim(engine);
    }).then(() => {
      setInit(true);
    });
  }, []);

  // 粒子效果容器加载回调
  const particlesLoaded = (container) => {
    // console.log(container);
  };

  return (
    <>
      {init && (
        <Particles
          id="tsparticles"
          particlesLoaded={particlesLoaded}
          options={particlesOptions}
        />
      )}
    </>
  );
});

ParticleBackground.displayName = "ParticleBackground";

export default ParticleBackground;

next

在组件中使用

import React from "react";
import ParticleBackground from "./ParticleBackground";
export default function demo() {
  return (
    <>
      <ParticleBackground />
    </>
  );
}

效果如下,可以通过option进行偏好配置。

标签:Particles,粒子,启用,ParticleBackground,react,使用,import,true
From: https://www.cnblogs.com/shaobei/p/18334410

相关文章

  • vue基础知识总结(2)--- axios的使用
    一.下载Vue3:选择自己想要下载的项目文件夹,cmd回车打开命令栏,执行:cnpminitvue@latest然后等待一会就可以创建一个项目,并更改项目名:√请输入项目名称:...vue-project之后按照提示输入对应的语句:cdvue-projectcnpminstall我们等待几秒Vue3项目就成功创建出来了......
  • HBuilderX 开发中使用 Node.js 搭建PDA扫码程序的服务端过程
    以下是使用HBuilderX和Node.js搭建程序服务端的大致步骤: 1. 安装Node.js首先,从Node.js官方网站下载并安装适合您操作系统的版本。在命令提示符中执行node-v,npm-v,检查nodejs版本是否安装完成。配置环境变量。2. 安装Oracle客户端根据您的操作系统,下载并安......
  • GroupMamba实战:使用GroupMamba实现图像分类任务(一)
    摘要状态空间模型(SSM)的最新进展展示了在具有次二次复杂性的长距离依赖建模中的有效性能。GroupMamba解决了将基于SSM的模型扩展到计算机视觉领域的挑战,特别是大型模型尺寸的不稳定性和低效性。GroupMamba在ImageNet-1K的图像分类、MS-COCO的目标检测和实例分割以及ADE2OK的......
  • 如何下载使用echarts
    1百度搜索echarts2点击下载3点击dist 4点击需要的js 5.点击下载按钮,或者直接copy内容 6快速上手即可使用 ......
  • 有谁知道如何在 ROS 中使用 python 开发赛车模拟编码?
    在模拟中,主要目标是让自动驾驶汽车读取AprilTags并根据标牌提供的说明进行导航。AprilTags是一种基准标记,可作为重要的视觉提示,传达有关汽车周围环境的信息,例如方向、速度限制和其他关键路标。汽车的车载视觉系统应该检测这些标签,解码嵌入的数据,并相应地调整其运动。这包括在......
  • 使用宝塔对程序、依赖、配置文件分离的springboot项目进行部署运行
    spingboot中的依赖:<plugins><!--上线部署JAR启动分离依赖lib和配置--><!--打包jar--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId>......
  • 探索Amazon Bedrock:使用Claude 3.5 Sonnet进行图像理解与分析,实现图像生成、验证、再
    引言在之前的文章中,我们介绍了利用AnthropicClaude3.5Sonnet的图像理解与分析功能,通过StabilityAIStableDiffusionXL(SDXL)生成的图像在AmazonBedrock上进行验证和再生成的使用案例。使用Claude3.5Sonnet和StableDiffusionXL:如何通过AmazonBedrock不断优化图像......
  • Rust换源:使用Cargo国内镜像
    Rust换源:使用Cargo国内镜像Rust是一门现代化的系统编程语言,而Cargo则是Rust的官方包管理工具。在进行Rust项目开发时,由于网络原因,从Crates.io下载依赖可能会很慢。为了提高开发效率,我们可以配置Cargo使用国内的镜像源,以加速包的下载和构建过程。配置Cargo国内镜像的步骤步骤一......
  • 如何使用Python获取Excel文件中嵌入图像的位置?
    我正在使用包含嵌入图像的Excel文件(.xlsx)。我需要使用Python以编程方式提取这些图像的位置(单元格引用)。这是我到目前为止所尝试过的:任何建议将不胜感激。使用openpyxl和openpyxl-image-loader:我没有处理嵌入图像。解压缩Excel文件并检查内容:......
  • 使用 pywhatkit 发送 Whatsapp 消息时出错
    我的程序应该使用pywhatkit库通过语音识别获取用户的输入来发送whatsapp消息。这是发送消息的功能。defWhatsApp():speak("ForWhomshouldisendmessage")Contacts={'mom':63XXXXXXX,#thesearenumbers(hidden)'karthi......