Particles.js 基于 Canvas 画布创建粒子原子颗粒效果

Particles.js 是一款基于 HTML5 Canvas 画布的轻量级粒子动画插件,可以设置粒子的形状、旋转、分布、颜色等属性,还可以动态添加粒子,效果非常炫酷,能和鼠标互动吸附或者是躲避鼠标指针。

Particles.js 基于 Canvas 画布创建粒子原子颗粒效果

使用方法

1、该粒子动画库插件使用方法非常简单,首先要在页面中引入 particles.js 文件。

<script src="js/particles.js"></script>

2、在页面中使用一个 div 来作为放置粒子的容器。

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

3、通过 particlesJS.load() 方法加载配置文件

particlesJS.load('particles-js', 'assets/particles.json', function() {

  console.log('callback - particles.js config loaded');

});

4、编写 particles.json 配置文件

{

  "particles": {

    "number": {

      "value": 80,

      "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": 10,

      "random": true,

      "anim": {

        "enable": false,

        "speed": 80,

        "size_min": 0.1,

        "sync": false

      }

    },

    "line_linked": {

      "enable": true,

      "distance": 300,

      "color": "#ffffff",

      "opacity": 0.4,

      "width": 2

    },

    "move": {

      "enable": true,

      "speed": 12,

      "direction": "none",

      "random": false,

      "straight": false,

      "out_mode": "out",

      "bounce": false,

      "attract": {

        "enable": false,

        "rotateX": 600,

        "rotateY": 1200

      }

    }

  },

  "interactivity": {

    "detect_on": "canvas",

    "events": {

      "onhover": {

        "enable": false,

        "mode": "repulse"

      },

      "onclick": {

        "enable": true,

        "mode": "push"

      },

      "resize": true

    },

    "modes": {

      "grab": {

        "distance": 800,

        "line_linked": {

          "opacity": 1

        }

      },

      "bubble": {

        "distance": 800,

        "size": 80,

        "duration": 2,

        "opacity": 0.8,

        "speed": 3

      },

      "repulse": {

        "distance": 400,

        "duration": 0.4

      },

      "push": {

        "particles_nb": 4

      },

      "remove": {

        "particles_nb": 2

      }

    }

  },

  "retina_detect": true

}

自定义参数

keyoption type / notesexample
particles.number.valuenumber40
particles.number.density.enablebooleantrue / false
particles.number.density.value_areanumber800
particles.color.valueHEX (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.number.density.value_areanumber800
particles.shape.typestring

array selection

"circle"

"edge"

"triangle"

"polygon"

"star"

"image"

["circle", "triangle", "image"]

particles.shape.stroke.widthnumber2
particles.shape.stroke.colorHEX (string)"#222222"
particles.shape.polygon.nb_slidesnumber5
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.randombooleantrue / false
particles.opacity.anim.enablebooleantrue / false
particles.opacity.anim.speednumber3
particles.opacity.anim.opacity_minnumber (0 to 1)0.25
particles.opacity.anim.syncbooleantrue / false
particles.size.valuenumber20
particles.size.randombooleantrue / false
particles.size.anim.enablebooleantrue / false
particles.size.anim.speednumber3
particles.size.anim.size_minnumber0.25
particles.size.anim.syncbooleantrue / false
particles.line_linked.enablebooleantrue / false
particles.line_linked.distancenumber150
particles.line_linked.colorHEX (string)#ffffff
particles.line_linked.opacitynumber (0 to 1)0.5
particles.line_linked.widthnumber1.5
particles.move.enablebooleantrue / false
particles.move.speednumber4
particles.move.directionstring"none"

"top"

"top-right"

"right"

"bottom-right"

"bottom"

"bottom-left"

"left"

"top-left"

particles.move.randombooleantrue / false
particles.move.straightbooleantrue / false
particles.move.out_modestring

(out of canvas)

"out"

"bounce"

particles.move.bounceboolean

(between particles)

true / false
particles.move.attract.enablebooleantrue / false
particles.move.attract.rotateXnumber3000
particles.move.attract.rotateYnumber1500
interactivity.detect_onstring"canvas", "window"
interactivity.events.onhover.enablebooleantrue / false
interactivity.events.onhover.modestring

array selection

"grab"

"bubble"

"repulse"

["grab", "bubble"]

interactivity.events.onclick.enablebooleantrue / false
interactivity.events.onclick.modestring

array selection

"push"

"remove"

"bubble"

"repulse"

["push", "repulse"]

interactivity.events.resizebooleantrue / false
interactivity.events.modes.grab.distancenumber100
interactivity.events.modes.grab.line_linked.opacitynumber (0 to 1)0.75
interactivity.events.modes.bubble.distancenumber100
interactivity.events.modes.bubble.sizenumber40
interactivity.events.modes.bubble.durationnumber

(second)

0.4
interactivity.events.modes.repulse.distancenumber200
interactivity.events.modes.repulse.durationnumber

(second)

1.2
interactivity.events.modes.push.particles_nbnumber4
interactivity.events.modes.push.particles_nbnumber4
retina_detectbooleantrue / false

相关链接

  • npm 包管理器地址:https://www.npmjs.com/package/particles.js
  • Github 地址:https://github.com/VincentGarreau/particles.js
  • CDN 加速:http://www.jsdelivr.com/#!particles.js
  • https://atmospherejs.com/newswim/particles

以上是 Particles.js 基于 Canvas 画布创建粒子原子颗粒效果 的全部内容, 来源链接: utcz.com/p/232172.html

回到顶部