vue3中使用particles粒子特效

2,028 阅读1分钟

vue3中使用particles粒子特效

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

//使用TS还需安装,如果安装完还是报错找不到该模块,可以重启一下项目 
npm i tsparticles
  • VUE3+TS 项目中使用
    • src目录下创建文件名为 env.d.ts,声明文件

      declare module 'particles.vue3';
      
    • main.ts 中导入

      import Particles from 'particles.vue3'
      createApp(App) .use(Particles) .mount('#app')
      
    • 页面中使用

      <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: 'transparent' // 背景颜色
          }
        },
        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>