关于vue3使用particles粒子特效的问题

目录
  • 第一步:引入 particles.js
  • 第二步:找到 node_modules 内的 particles.js
  • 第三步:项目 components 下创建 particles 目录
  • 第四步:index.vue 写入以下内容
  • 第五步:particles.json 写入以下内容
  • 第六步:修改 particles.js
  • 第七步:引入这里的index.vue

不知道大家有没有被particles恶心过,反正这东西是教育了我一下午时间。

起初我想直接用 vue-particles 这个插件去做,但我惊讶的发现,好像不顶用。

vue-particles 内部用了 require 这个api,vue3已经全面弃用了require,去拥抱 commonJSes6 了,改动了一个地方,其他地方也会出问题。

第一步:引入 particles.js

npm i particles.js
or
yarn add particles.js

第二步:找到 node_modules 内的 particles.js

把它弄出来 :

弄出来后可以用 npm uninstall particles.js 将依赖去除

第三步:项目 components 下创建 particles 目录

将找到的 particles.js 放进去后,在其同级目录创建 index.vue 与 particles.json:

第四步:index.vue 写入以下内容

<template>
  <div class="particles-js-box">
    <div id="particles-js"></div>
  </div>
</template>
<script>
/* eslint-disable */
import particlesJs from "./particles.js";
import particlesConfig from "./particles.json";
export default {
  data() {
    return {};
  },
  mounted() {
    this.init();
  },
  methods: {
    init() {
      particlesJS("particles-js", particlesConfig);
      document.body.style.overflow = "hidden";
    },
  },
};
</script>
<style scoped>
.particles-js-box {
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  z-index: 1;
}
#particles-js {
  background-color: #2d3a4b;
  width: 100%;
  height: 100%;
}
</style>

第五步:particles.json 写入以下内容

{
    "particles": {
        "number": {
            "value": 60,
            "density": {
                "enable": true,
                "value_area": 800
            }
        },
        "color": {
            "value": "#ffffff"
        },
        "shape": {
            "type": "circle",
            "stroke": {
                "width": 0,
                "color": "#000000"
            },
            "polygon": {
                "nb_sides": 5
            },
            "image": {
                "src": "img/github.svg",
                "width": 100,
                "height": 100
            }
        },
        "opacity": {
            "value": 0.5,
            "random": false,
            "anim": {
                "enable": false,
                "speed": 1,
                "opacity_min": 0.1,
                "sync": false
            }
        },
        "size": {
            "value": 3,
            "random": true,
            "anim": {
                "enable": false,
                "speed": 40,
                "size_min": 0.1,
                "sync": false
            }
        },
        "line_linked": {
            "enable": true,
            "distance": 150,
            "color": "#ffffff",
            "opacity": 0.4,
            "width": 1
        },
        "move": {
            "enable": true,
            "speed": 4,
            "direction": "none",
            "random": false,
            "straight": false,
            "out_mode": "out",
            "bounce": false,
            "attract": {
                "enable": false,
                "rotateX": 100,
                "rotateY": 1200
            }
        }
    },
    "interactivity": {
        "detect_on": "Window",
        "events": {
            "onhover": {
                "enable": true,
                "mode": "grab"
            },
            "onclick": {
                "enable": true,
                "mode": "push"
            },
            "resize": true
        },
        "modes": {
            "grab": {
                "distance": 140,
                "line_linked": {
                    "opacity": 1
                }
            },
            "bubble": {
                "distance": 400,
                "size": 40,
                "duration": 2,
                "opacity": 8,
                "speed": 3
            },
            "repulse": {
                "distance": 200,
                "duration": 0.4
            },
            "push": {
                "particles_nb": 4
            },
            "remove": {
                "particles_nb": 2
            }
        }
    },
    "retina_detect": true
}

第六步:修改 particles.js

1、1416行 - 1427行 替换为:

Object.deepExtend = function f(destination, source) {
  for (var property in source) {
    if (source[property] && source[property].constructor &&
     source[property].constructor === Object) {
      destination[property] = destination[property] || {};
      f(destination[property], source[property])
    } else {
      destination[property] = source[property];
    }
  }
  return destination;
};

2、最后一行添加:

export default window.particlesJS 

第七步:引入这里的index.vue

<template>
  <div>
    <particles></particles>
  </div>
</template>
<script>
import Particles from '@/components/particles/index.vue'
export default {
  components: {
    "particles":Particles
  }
};
</script>

以上七步足矣! 这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue 粒子特效的示例代码

    本文介绍了vue 粒子特效的示例代码,分享给大家,具体如下: 实现效果: 没错,你看到的上图那些类似于星座图的点和线,是由vue-particles生成的,而且能与用户鼠标事件产生互动. 传送门:vue-particles 使用教程 npm install vue-particles --save-dev main.js文件: import Vue from 'vue' import VueParticles from 'vue-particles' Vue.use(VueParticles)

  • vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果. 解决问题: 以背景方式显示 无法获取按钮焦点,触发不了点击事件 实现过程 安装vue-particles npm install vue-particles --save-dev 全局配置vue-particles 在main.js里面: import VueParticles from 'vue-particles' Vue.use(VueP

  • vue3中使用VueParticles实现粒子动态背景效果

    目录 particles.vue3官网 可以仔细看下这里 有案例跟文档 官网 Demo 好了直接进入主题 安装使用 Vue3 语法糖中使用 配置单独写到文件particles.js,代码看起来简洁些 - 在某项目见到粒子动画背景,也想将这个动画效果用在自己的项目上. 先看效果 实际是动图的. 还不太会搞动图 凑合看下 particles.vue3官网 particles.js.org/ 可以仔细看下这里 有案例跟文档 官网 Demo 好了直接进入主题 安装使用 npm install parti

  • vue3使用particles插件实现粒子背景的方法详解

    目录 总结 效果(可以修改多种不同的样式效果) 1.安装 npm install particles.vue3 2.main.js import { createApp } from 'vue' import App from './App.vue' import router from "./router"; import Particles from "particles.vue3"; // 引入 const app = createApp(App); app.

  • 关于vue3使用particles粒子特效的问题

    目录 第一步:引入 particles.js 第二步:找到 node_modules 内的 particles.js 第三步:项目 components 下创建 particles 目录 第四步:index.vue 写入以下内容 第五步:particles.json 写入以下内容 第六步:修改 particles.js 第七步:引入这里的index.vue 不知道大家有没有被particles恶心过,反正这东西是教育了我一下午时间. 起初我想直接用 vue-particles 这个插件去做,但我

  • ThingJS粒子特效一键实现雨雪效果

    使用ThingJS可以快速编写粒子效果,比如:下雨.下雪(可以控制雨雪大小).喷水.火焰效果等,甚至可以通过对接第三方的数据,实时控制三维场景的效果(比如:对接天气接口). 1.粒子效果 ThingJS 提供 ParticleSystem 物体类来实现粒子效果.自己制作粒子效果需要图片处理.写代码.3D渲染, 是个很艰巨的任务,需要掌握大量 3D 算法知识,还要掌握 shader 语言.ThingJS封装了粒子效果的实现方法,减少了代码量和开发投入,更受3D开发初学者的欢迎,直接用query查询

  • js canvas实现随机粒子特效

    本文实例为大家分享了js canvas随机粒子特效的具体代码,供大家参考,具体内容如下 前言 canvas实现前端的特效美术 结果展示 代码 html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge&qu

  • vue实现登录页背景粒子特效

    本文实例为大家分享了vue实现登录页背景粒子特效的具体代码,供大家参考,具体内容如下 上图中的点和线,是由Vue-Particles生成的,不仅自己动,还可以与用户的鼠标互动.例子的样式有点丑,大家凑合看一下吧. 1. 使用教程 1.1 安装 npm install vue-particles --save-dev 1.2 引入 main.js 文件 import Vue from 'vue' import VueParticles from 'vue-particles' Vue.use(Vu

  • vue3实现数字滚动特效实例详解

    目录 前言 思路 文件目录 使用示例 入口文件index.js main.js使用 requestAnimationFrame.js思路 完整代码: CountTo.vue组件思路 总结 前言 vue3不支持vue-count-to插件,无法使用vue-count-to实现数字动效,数字自动分割,vue-count-to主要针对vue2使用,vue3按照会报错: TypeError: Cannot read properties of undefined (reading '_c') 的错误信息

  • 基于three.js实现的3D粒子动效实例代码

    一.背景 粒子特效是为模拟现实中的水.火.雾.气等效果由各种三维软件开发的制作模块,原理是将无数的单个粒子组合使其呈现出固定形态,借由控制器.脚本来控制其整体或单个的运动,模拟出现真实的效果.three.js是用JavaScript编写的WebGL的第三方库,three.js提供了丰富的API帮助我们去实现3D动效,本文主要介绍如何使用three.js实现粒子过渡效果,以及基本的鼠标交互操作. (注:本文使用的关于three.js的API都是基于版本r98的.) 二.实现步骤 1. 创建渲染场景

  • iOS动画实现雨花与樱花特效

    先来看看效果图: 下面直接上代码: 粒子特效的话我只服苹果系统的,CAEmitter粒子特效提供了非常丰富的属性来实现各种效果(雨滴.雪花.流星),用法简单B格高.首先创建好CAEmitterLayer粒子发射器图层,CAEmitterCell粒子单元,然后根据需要设置somany粒子单元的属性就OK了,最后注意要将粒子发射器图层的layer添加到整个背景的sublayer上. @interface XMWeatherView () @property(nonatomic,strong) CAE

  • Unity实现粒子光效导出成png序列帧

    本文为大家分享了Unity实现粒子光效导出成png序列帧的具体代码,供大家参考,具体内容如下 这个功能并不是很实用,不过美术同学有这样的需求,那么就花了一点时间研究了下. 我们没有使用Unity的引擎,但是做特效的同学找了一批Unity的粒子特效,希望导出成png序列帧的形式,然后我们的游戏来使用.这个就相当于拿Unity做了特效编辑器的工作.这个并不是很"邪门",因为用幻影粒子,或者3dmax,差不多也是这个思路,只不过那些软件提供了正规的导出功能,而Unity则没有. 先上代码 u

随机推荐