首先我们需要一个实现效果的json文件。

在scr路径下的assets路劲下新建一个json文件,取名particles.json :

然后直接把下面这堆东西复制进去即可。

{
  "particles": {
    "number": {
      "value": 800,
      "density": {
        "enable": true,
        "value_area": 800
      }
    },
    "color": {
      "value": "#fff"
    },
    "shape": {
      "type": "circle",
      "stroke": {
        "width": 0,
        "color": "#000000"
      },
      "polygon": {
        "nb_sides": 6
      },
      "image": {
        "src": "img/github.svg",
        "width": 100,
        "height": 100
      }
    },
    "opacity": {
      "value": 0.5,
      "random": false,
      "anim": {
        "enable": false,
        "speed": 1,
        "opacity_min": 0.05,
        "sync": false
      }
    },
    "size": {
      "value": 4,
      "random": true,
      "anim": {
        "enable": false,
        "speed": 10,
        "size_min": 0.05,
        "sync": false
      }
    },
    "line_linked": {
      "enable": false,
      "distance": 150,
      "color": "#ffffff",
      "opacity": 0.4,
      "width": 1
    },
    "move": {
      "enable": true,
      "speed": 2,
      "direction": "bottom",
      "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": "push"
      },
      "onclick": {
        "enable": true,
        "mode": "repulse"
      },
      "resize": true
    },
    "modes": {
      "grab": {
        "distance": 140,
        "line_linked": {
          "opacity": 1
        }
      },
      "bubble": {
        "distance": 100,
        "size": 4,
        "duration": 2,
        "opacity": 8,
        "speed": 3
      },
      "repulse": {
        "distance": 160,
        "duration": 0.4
      },
      "push": {
        "particles_nb": 10
      },
      "remove": {
        "particles_nb": 2
      }
    }
  },
  "retina_detect": true
}

然后下载安装一下particles.js:

npm install particles.js

package.json中出现版本号即为安装成功:

 

然后我们在需要这个可交互背景的界面引入:

import particlesJson from '../../assets/particles.json'

路径一定要写对哦,路径错了界面就会出不来。 

 然后在mounted方法中进行调用:

    require('particles.js')
// eslint-disable-next-line no-undef
    particlesJS('particles', particlesJson);

 ps:这三行都需要,少了任何一行都不行哦。

然后在上面的template标签中添加一个id=particles的div即可:

<div id="particles"></div>

然后界面内的东西放在这个div里面就可以了。至此已经全部完成。我们看一下效果

 鼠标点击会有雪花躲避鼠标的样式出现,当然是可以自己diy的,只需要直接修改json文件中的value即可,具体需要按照自己的要求去自定义修改,可参考:

键值参数选项/ 说明实例
particles.number.valuenumber   数量40
particles.number.density.enableboolean   true / false
particles.number.density.value_areanumber   区域散布密度大小800
particles.color.value

HEX (string) 
RGB (object) 
HSL (object) 
array selection (HEX) 
random (string)

原子的颜色

"#b61924" 
{r:182, g:25, b:36} 
{h:356, s:76, l:41} 
["#b61924", "#333333", "999999"] 
"random"
particles.shape.typestring 
array selection 原子的形状
"circle" 
"edge" 
"triangle" 
"polygon" 
"star" 
"image" 
["circle", "triangle", "image"]
particles.shape.stroke.widthnumber      原理的宽度2
particles.shape.stroke.colorHEX (string)  原子颜色"#222222"
particles.shape.polygon.nb_slidesnumber       原子的多边形边数5
particles.shape.image.srcpath link 
svg / png / gif / jpg  原子的图片可以使用自定义图片
"assets/img/yop.svg" 
"http://mywebsite.com/assets/img/yop.png"
particles.shape.image.widthnumber 
(for aspect ratio)    图片宽度
100
particles.shape.image.heightnumber 
(for aspect ratio) 图片高度
100
particles.opacity.valuenumber (0 to 1)   不透明度0.75
particles.opacity.randomboolean     随机不透明度true / false
particles.opacity.anim.enableboolean            渐变动画true / false
particles.opacity.anim.speednumber            渐变动画速度3
particles.opacity.anim.opacity_minnumber (0 to 1)       渐变动画不透明度0.25
particles.opacity.anim.syncbooleantrue / false
particles.size.valuenumber       原子大小20
particles.size.randomboolean       原子大小随机true / false
particles.size.anim.enableboolean      原子渐变true / false
particles.size.anim.speednumber     原子渐变速度3
particles.size.anim.size_minnumber0.25
particles.size.anim.syncbooleantrue / false
particles.line_linked.enableboolean       连接线true / false
particles.line_linked.distancenumber       连接线距离150
particles.line_linked.colorHEX (string)   连接线颜色#ffffff
particles.line_linked.opacitynumber (0 to 1)    连接线不透明度0.5
particles.line_linked.widthnumber     连接线的宽度1.5
particles.move.enableboolean     原子移动true / false
particles.move.speednumber     原子移动速度4
particles.move.directionstring              原子移动方向"none" 
"top" 
"top-right" 
"right" 
"bottom-right" 
"bottom" 
"bottom-left" 
"left" 
"top-left"
particles.move.randomboolean              移动随机方向true / false
particles.move.straightboolean              直接移动true / false
particles.move.out_modestring  
(out of canvas)        是否移动出画布
"out" 
"bounce"
particles.move.bounceboolean 
(between particles)   是否跳动移动
true / false
particles.move.attract.enableboolean           原子之间吸引true / false
particles.move.attract.rotateXnumber   原子之间吸引X水平距离3000
particles.move.attract.rotateYnumber  y垂直距离1500
interactivity.detect_onstring        原子之间互动检测"canvas", "window"
interactivity.events.onhover.enableboolean    悬停true / false
interactivity.events.onhover.mode

string 
array selection

悬停模式 

"grab"     抓取临近的
"bubble"  泡沫球效果
"repulse"  击退效果
["grab", "bubble"]
interactivity.events.onclick.enableboolean  点击效果true / false
interactivity.events.onclick.mode

string 
array selection

点击效果模式

"push" 
"remove" 
"bubble" 
"repulse" 
["push", "repulse"]
interactivity.events.resizeboolean         互动事件调整true / false
interactivity.events.modes.grab.distancenumber        原子互动抓取距离100
interactivity.events.modes.grab.line_linked.opacitynumber (0 to 1)        原子互动抓取距离连线不透明度0.75
interactivity.events.modes.bubble.distancenumber       原子抓取泡沫效果之间的距离100
interactivity.events.modes.bubble.sizenumber       原子抓取泡沫效果之间的大小40
interactivity.events.modes.bubble.durationnumber    原子抓取泡沫效果之间的持续事件
(second)
0.4
interactivity.events.modes.repulse.distancenumber       击退效果距离200
interactivity.events.modes.repulse.durationnumber      击退效果持续事件
(second)
1.2
interactivity.events.modes.push.particles_nbnumber         粒子推出的数量4
interactivity.events.modes.push.particles_nbnumber4
retina_detectbooleantrue / false
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐