VUE3中使用Particles 粒子特效

一、安装

vue3中要使用 particles.vue3

//使用npm安装
npm install particles.vue3 --save

//使用yarn安装
yarn add particles.vue3 --save

//使用TS还需安装,如果安装完还是报错找不到该模块,可以重启一下项目
npm i tsparticles

二、VUE3+TS 项目中使用

1、src目录下创建文件名为 env.d.ts,声明文件

declare module 'particles.vue3';

2、main.ts 中导入

import Particles from 'particles.vue3'
createApp(App)
  .use(Particles)
  .mount('#app')

3、页面中使用

<template>
    <div>
      <Particles
        id="tsparticles"
        :particlesInit="particlesInit"
        :particlesLoaded="particlesLoaded"
        :options="options"
      />
    </div>
</template>
<script setup lang='ts'>
import { reactive } from 'vue'
import { loadFull } from "tsparticles"
import type { Engine } from 'tsparticles-engine'

const particlesInit = async (engine:Engine) => {
    await loadFull(engine)
}

const particlesLoaded = async (container:any) => {
    console.log('Particles container loaded', container)
}
const options = reactive({
      background: {
        color: {
          value: '#000' // 粒子颜色
        }
      },
      fpsLimit: 60,
      interactivity: {
        events: {
          onClick: {
            enable: true,
            mode: 'push' // 可用的click模式有: "push", "remove", "repulse", "bubble"。
          },
          onHover: {
            enable: true,
            mode: 'grab' // 可用的hover模式有: "grab", "repulse", "bubble"。
          },
          resize: true
        },
        modes: {
          bubble: {
            distance: 400,
            duration: 2,
            opacity: 0.8,
            size: 40
          },
          push: {
            quantity: 4
          },
          repulse: {
            distance: 200,
            duration: 0.4
          }
        }
      },
      particles: {
        color: {
          value: '#ffffff'
        },
        links: {
          color: '#ffffff', // '#dedede'。线条颜色。
          distance: 150, // 线条长度
          enable: true, // 是否有线条
          opacity: 0.5, // 线条透明度。
          width: 1 // 线条宽度。
        },
        collisions: {
          enable: false
        },
        move: {
          direction: 'none',
          enable: true,
          outMode: 'bounce',
          random: false,
          speed: 4, // 粒子运动速度。
          straight: false
        },
        number: {
          density: {
            enable: true,
            area: 800
          },
          value: 80 // 粒子数量。
        },
        opacity: {
          value: 0.5 // 粒子透明度。
        },
        shape: {
          type: 'circle' // 可用的粒子外观类型有:"circle","edge","triangle", "polygon","star"
        },
        size: {
          random: true,
          value: 5
        }
      },
      detectRetina: true
    })

</script>

效果如下图:

posted @ 2022-05-27 09:01  清和时光  阅读(5537)  评论(1编辑  收藏  举报