GitHub 里面有详细的 API 使用方法
作者示例 Demo

结构

image.png

源码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>particles Demo</title>
  6. <style class="cp-pen-styles">
  7. #particles-js {
  8. position: absolute;
  9. width: 100vw;
  10. height: 100vh;
  11. z-index: -1;
  12. }
  13. body {
  14. background: #171e2a;
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <div id="particles-js">
  20. </div>
  21. <script src='./particles.min.js'></script>
  22. <script>
  23. //particles-js 为 HTML-DOM ID
  24. particlesJS("particles-js", {
  25. //颗粒参数
  26. "particles": {
  27. "number": {
  28. //离粒子显示的数量值
  29. "value": 100,
  30. //密度
  31. "density": {
  32. //激活
  33. "enable": true,
  34. //值区 值越小 显示的越多
  35. "value_area": 300
  36. }
  37. },
  38. "color": {
  39. //下面是各种可接收值的格式
  40. //"#b61924"
  41. // {r:182, g:25, b:36}
  42. // {h:356, s:76, l:41}
  43. // ["#b61924", "#333333", "999999"]
  44. // "random"
  45. "value": "#ffffff"
  46. },
  47. //形状
  48. "shape": {
  49. //下面是各种可接收值的格式 都可以与下面的 nb_sides 边的数量结合使用
  50. //"circle" 园
  51. // "edge" 有边的 看起来像是嵌套的一种图形
  52. // "triangle" 三角形
  53. // "polygon" 多边形
  54. // "star" 星星
  55. // "image" 图片 对应下面的 image 参数
  56. // ["circle", "triangle", "image"] 数组混合参数 这样出来的形状就像是随机的多个形状
  57. "type": "circle",
  58. //
  59. "stroke": {
  60. "width": 1,
  61. "color": "#fff"
  62. },
  63. //多边形 配合上面的形状使用
  64. "polygon": {
  65. //边数
  66. "nb_sides": 5
  67. },
  68. //图片参数 配合上面的形状 type 为 image 使用
  69. "image": {
  70. "src": "http://www.dynamicdigital.us/wp-content/uploads/2013/02/starburst_white_300_drop_2.png",
  71. "width": 100,
  72. "height": 100
  73. }
  74. },
  75. //透明度
  76. "opacity": {
  77. //数字(0到1)
  78. "value": 0.5,
  79. //布尔值
  80. "random": true,
  81. //动画参数
  82. "anim": {
  83. //激活
  84. "enable": false,
  85. //速度
  86. "speed": 1,
  87. //时间
  88. "opacity_min": 0.1,
  89. //同步
  90. //布尔值
  91. "sync": false
  92. }
  93. },
  94. //尺寸
  95. "size": {
  96. //粒子尺寸的数值
  97. //注意:不可过大会报错 这个数值应该是计算推算出的一个大致的区间
  98. "value": 1,
  99. "random": false,
  100. "anim": {
  101. "enable": false,
  102. "speed": 20,
  103. "size_min": 1,
  104. "sync": false
  105. }
  106. },
  107. //连接线
  108. "line_linked": {
  109. //激活
  110. "enable": false,
  111. //距离
  112. "distance": 50,
  113. "color": "#ffffff",
  114. "opacity": 0.6,
  115. "width": 1
  116. },
  117. //移动
  118. "move": {
  119. "enable": true,
  120. //移动的速度
  121. "speed": 10,
  122. //移动的方向
  123. //下面是各种可接收值
  124. //"none"
  125. // "top"
  126. // "top-right"
  127. // "right"
  128. // "bottom-right"
  129. // "bottom"
  130. // "bottom-left"
  131. // "left"
  132. // "top-left"
  133. "direction": "none",
  134. "random": true,
  135. //直线运动 数值为 true 粒子动效不好看
  136. //布尔值
  137. "straight": false,
  138. //输出模式
  139. //下面是各种可接收值
  140. //"out" 跑到外面
  141. //"bounce" 反弹
  142. "out_mode": "out",
  143. //粒子之间碰撞是否反弹
  144. //布尔值
  145. "bounce": false,
  146. //吸引 激活之后粒子的方向会有些杂乱无章
  147. "attract": {
  148. "enable": false,
  149. "rotateX": 300,
  150. "rotateY": 1200
  151. }
  152. }
  153. },
  154. //互动性
  155. "interactivity": {
  156. //检测
  157. //下面是各种可接收值
  158. //"canvas", "window"
  159. "detect_on": "canvas",
  160. //添加各种事件
  161. "events": {
  162. //鼠标经过
  163. "onhover": {
  164. "enable": false,
  165. //模式
  166. //下面是各种可接收值
  167. //"grab" 抓住 显示的是粒子间的连接线
  168. // "bubble" 气泡 显示的是放大版的上面的 image src 的图片
  169. // "repulse" 浅水 使粒子无法进入鼠标固定的范围
  170. // ["grab", "bubble"] 还可以用数组的形式来设置
  171. "mode": "bubble"
  172. },
  173. //点击事件
  174. "onclick": {
  175. "enable": false,
  176. //下面是各种可接收值
  177. //"push" 增加粒子
  178. // "remove" 删除粒子
  179. // "bubble"
  180. // "repulse"
  181. // ["push", "repulse"]
  182. "mode": "repulse"
  183. },
  184. //调整大小
  185. //布尔值
  186. "resize": false
  187. },
  188. //给上面的可设置的模式增加更多的的参数设置
  189. "modes": {
  190. "grab": {
  191. //距离
  192. "distance": 150,
  193. //连接线
  194. "line_linked": {
  195. "opacity": 1
  196. }
  197. },
  198. "bubble": {
  199. "distance": 200,
  200. //尺寸
  201. "size": 20,
  202. //持续的时间
  203. "duration": 2,
  204. "opacity": 8,
  205. //速度
  206. "speed": 3
  207. },
  208. "repulse": {
  209. "distance": 200,
  210. "duration": 0.2
  211. },
  212. //增加
  213. "push": {
  214. //颗粒面积
  215. "particles_nb": 1
  216. },
  217. //去除
  218. "remove": {
  219. //颗粒面积
  220. "particles_nb": 2
  221. }
  222. }
  223. },
  224. "retina_detect": true //视网膜检测
  225. });
  226. </script>
  227. </body>
  228. </html>

github Demo 地址

https://github.com/sunxiaochuan/particlesDemo

效果 Gif 图

  • 手机端

9.gif

  • PC 端

10.gif