当前位置:首页 > VUE

vue实现粒子特效

2026-02-17 06:48:33VUE

使用vue-particles插件实现粒子特效

vue-particles是一个专为Vue设计的粒子效果插件,基于particles.js开发。安装方式如下:

npm install vue-particles

在main.js中全局引入:

import VueParticles from 'vue-particles'
Vue.use(VueParticles)

组件中使用示例:

vue实现粒子特效

<template>
  <div id="app">
    <vue-particles
      color="#dedede"
      :particleOpacity="0.7"
      :particlesNumber="80"
      shapeType="circle"
      :particleSize="4"
      linesColor="#dedede"
      :linesWidth="1"
      :lineLinked="true"
      :lineOpacity="0.4"
      :linesDistance="150"
      :moveSpeed="3"
      :hoverEffect="true"
      hoverMode="grab"
      :clickEffect="true"
      clickMode="push"
    />
  </div>
</template>

自定义配置参数

可通过修改以下参数调整粒子效果:

particles: {
  number: { value: 80, density: { enable: true, value_area: 800 } },
  color: { value: "#ffffff" },
  shape: { type: "circle" },
  opacity: { value: 0.5, random: false },
  size: { value: 3, random: true },
  line_linked: { enable: true, distance: 150, color: "#ffffff", opacity: 0.4, width: 1 },
  move: { enable: true, speed: 6, direction: "none", random: false, straight: false }
}

使用原生Canvas实现

创建自定义Vue组件:

vue实现粒子特效

<template>
  <canvas ref="canvas" class="particles-canvas"></canvas>
</template>

<script>
export default {
  mounted() {
    this.initParticles()
  },
  methods: {
    initParticles() {
      const canvas = this.$refs.canvas
      const ctx = canvas.getContext('2d')
      canvas.width = window.innerWidth
      canvas.height = window.innerHeight

      let particles = []
      const particleCount = 100

      for(let i = 0; i < particleCount; i++) {
        particles.push({
          x: Math.random() * canvas.width,
          y: Math.random() * canvas.height,
          size: Math.random() * 5 + 1,
          speedX: Math.random() * 3 - 1.5,
          speedY: Math.random() * 3 - 1.5
        })
      }

      function animate() {
        ctx.clearRect(0, 0, canvas.width, canvas.height)

        particles.forEach(particle => {
          particle.x += particle.speedX
          particle.y += particle.speedY

          if(particle.x < 0 || particle.x > canvas.width) {
            particle.speedX = -particle.speedX
          }
          if(particle.y < 0 || particle.y > canvas.height) {
            particle.speedY = -particle.speedY
          }

          ctx.fillStyle = 'rgba(255, 255, 255, 0.8)'
          ctx.beginPath()
          ctx.arc(particle.x, particle.y, particle.size, 0, Math.PI * 2)
          ctx.fill()
        })

        requestAnimationFrame(animate)
      }

      animate()
    }
  }
}
</script>

<style>
.particles-canvas {
  position: fixed;
  top: 0;
  left: 0;
  z-index: -1;
}
</style>

性能优化建议

限制粒子数量在移动设备上自动减少:

const particleCount = window.innerWidth < 768 ? 50 : 100

添加resize事件处理:

window.addEventListener('resize', () => {
  canvas.width = window.innerWidth
  canvas.height = window.innerHeight
})

使用requestAnimationFrame替代setInterval确保流畅动画。考虑使用WebGL渲染器如three.js处理大规模粒子系统。

标签: 粒子特效
分享给朋友:

相关文章

react实现特效

react实现特效

React 实现特效的常见方法 使用 CSS 动画和过渡 通过 CSS 的 @keyframes 和 transition 属性实现基础动画效果,结合 React 的 className 或 styl…

css制作跑车特效

css制作跑车特效

使用CSS制作跑车特效 跑车动画效果 通过CSS的@keyframes和transform属性可以实现跑车移动的动画效果。以下是一个简单的跑车移动动画代码示例: .car { position…

css制作特效

css制作特效

CSS 制作特效的方法 CSS 提供了多种方式实现动态和视觉特效,以下是一些常见方法: 动画效果 通过 @keyframes 和 animation 属性创建复杂动画: @keyframes fa…

css 制作下雨特效

css 制作下雨特效

CSS 下雨特效实现方法 通过CSS动画和伪元素可以模拟逼真的下雨效果,以下是两种常见实现方式: 线性渐变动画法 通过多个线性渐变动画元素模拟雨滴下落: .rain { position:…

js实现粒子特效

js实现粒子特效

实现粒子特效的方法 使用JavaScript创建粒子特效可以通过Canvas或WebGL实现。以下是基于Canvas的简单粒子系统实现方法。 创建Canvas画布 在HTML中创建Canvas元素并…

js实现3D烟花特效

js实现3D烟花特效

使用Three.js实现3D烟花特效 Three.js是一个强大的JavaScript 3D库,适合创建烟花特效。以下是一个基础实现示例: 安装Three.js: npm install th…