美文网首页F2e踩坑之路vueVue项目
particles.js在vue上的运用

particles.js在vue上的运用

作者: 詹小云 | 来源:发表于2017-07-18 16:54 被阅读2471次

知乎的首页后面的粒子动效总觉得很炫酷,搜了一下,发现是用particles.js编写的。刚好目前的项目是利用vue框架的,两个凑在一起学了。
讲道理,这个用得好的话,页面是可以很酷的,譬如我现在写的项目

酷酷的登录页

嘻嘻~

安装particles.js


npm install --save particles.js

配置particles.js


  1. template
    这个就是动态粒子要展示的位置。
<div id="particles"></div>
  1. script
    因为涉及到dom树,所以必须在挂载结束后初始化particles.js。第一个参数id就是你在template上取得id名,像我要写的话就是particles。第二个参数是你的data存放的路径,个人建议使用相对路径。
mounted(){
    particlesJS.load('id','path to your particles.data');
}
  1. style
#particles{
      position: absolute;
      width: 100%;
      height: 100%;
      background-color: #b61924;
      background-repeat: no-repeat;
      background-size: cover;
      background-position: 50% 50%;
}

讲到这里会发现,还有一个最重要的点没讲出来,恩,就是particles.js 的引入。当你的使用范围比较小时,可以直接在当前vue文件的script中引入,即

//vue文件
import particles from 'particles.js'

又或者你觉得这样不好管理,一定要放在main文件中也可以

//main文件
import particles from 'particles.js'
Vue.use(particles)
  1. particles.data
    这个data是用于控制粒子在页面中所呈现的状态,这个文件是自己新建的,建议放在静态资源文件夹里。通过修改里边的字段,来得到自己想要的效果。如修改particles.color.value 的值就是修改粒子的颜色;修改particle.shape就是修改粒子的外观。
{
  "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
}

最后呈现的效果如下

效果图

嘻嘻,记录完了,可以把test文件删了。

相关文章

网友评论

  • 15cc20e7e6c2:为什么我这么使用之后rooter-view里面的内容就不显示了呢。。。
    <div id="app">
    <vue-particles
    color="#dedede"
    :particleOpacity="0.7"
    :particlesNumber="60"
    shapeType="circle"
    :particleSize="3"
    linesColor="#dedede"
    :linesWidth="0"
    :lineLinked="true"
    :lineOpacity="0.4"
    :linesDistance="150"
    :moveSpeed="3"
    :hoverEffect="true"
    hoverMode="grab"
    :clickEffect="true"
    clickMode="push"
    ></vue-particles>
    <router-view></router-view>
    </div>
    詹小云:@YQuite 那你可以用position叠加呀
    15cc20e7e6c2:不对,是显示在了那个特效的下方,怎么把它作为背景。。。
  • 李仁平:这个不兼容ie能解决吗
    詹小云:这个库本身是兼容的,应该是你项目有别的地方不兼容
  • ef04caa010a5:你好 我在引入自己的particles.json的时候返回的结果一直是首页的所有dom元素,怎么更改路径都是这个结果 请问有什么有效的办法吗
    詹小云:可以给我看下你的代码吗?
  • 人类进化又没带我:1.下载依赖

    npm install vue-particles --save-dev
    2.main.js引入

    import Vue from 'vue'
    import VueParticles from 'vue-particles'
    Vue.use(VueParticles)
    3.直接使用
    <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"
    >
    </vue-particles>
    复制代码
    4.属性含义
    color: String类型。默认'#dedede'。粒子颜色。
    particleOpacity: Number类型。默认0.7。粒子透明度。
    particlesNumber: Number类型。默认80。粒子数量。
    shapeType: String类型。默认'circle'。可用的粒子外观类型有:"circle","edge","triangle", "polygon","star"。
    particleSize: Number类型。默认80。单个粒子大小。
    linesColor: String类型。默认'#dedede'。线条颜色。
    linesWidth: Number类型。默认1。线条宽度。
    lineLinked: 布尔类型。默认true。连接线是否可用。
    lineOpacity: Number类型。默认0.4。线条透明度。
    linesDistance: Number类型。默认150。线条距离。
    moveSpeed: Number类型。默认3。粒子运动速度。
    hoverEffect: 布尔类型。默认true。是否有hover特效。
    hoverMode: String类型。默认true。可用的hover模式有: "grab", "repulse", "bubble"。
    clickEffect: 布尔类型。默认true。是否有click特效。
    clickMode: String类型。默认true。可用的click模式有: "push", "remove", "repulse", "bubble"
  • aa1eea241fe8:你好,我在使用particlesJS.load方法时获取配置json文件失败,请问是需要引入vue-resource或者axios吗?
    詹小云:不用的,他那个方法已经封装好了ajax的,你引用失败应该是没有起服务
  • goaegean:您好,import particles from 'particles.js'这样引入之后particles没有particlesJS方法啊
    8b3a32fd5846:@goaegean 你好,我和你遇到一样的问题,怎么使用script-loader,方便说下么
    goaegean:@詹小云 是放在当前vue文件中的,我看了一下通过npm intsall安装的particles.js,它本身并不是模块化的开发方式啊,所以import进来还是空对象;最后我使用了script-loader在当前vue文件执行该模块以在浏览器里获取particlesJS作用域,再在当前组件mounted钩子函数中调用,也算是能正常使用了。我不知道您那是怎么起作用的?
    詹小云:你是放在当前vue文件还是main文件里边?如果是main文件,还需要加一句:Vue.use(particles)
  • 8184cf7486f7:mounted(){
    particlesJS.load('id','path to your particles.data');
    }
    这个后边的路径是node_modules里面那个particles.json的路径吗,我一直报错找不到这个
    错误Failed to load resource: the server responded with a status of 404 (Not Found)
    詹小云:不好意思啊,上次看错了,那个load方法里边的路劲是你自己新建的一个json,这个文件最好放在静态资源文件夹里。加载不出来的话,有两个原因,一是你地址写错了,二是你的网页没有放在服务器上。因为particles的load函数是用ajax加载的,无法请求file协议下的文件。
    詹小云:是的,放的就是json的路径,你应该是路径没写对
  • 2a2b211342a9:能给我你登录页的背景图吗,星球那个
    詹小云:不好意思啊,这个是公司的人p的,我没办法给
  • zhoocoo:你好,我在vue中使用particleJS时,在跳转路由后,再进入这个页面,会导致页面卡顿,请问怎么解决呢?
    詹小云:这个库本身也不大呀,卡顿应该不会是particle造成的

本文标题:particles.js在vue上的运用

本文链接:https://www.haomeiwen.com/subject/eydrnttx.html