如何使用tsParticles创建背景效果

来自菜鸟教程
跳转至:导航、​搜索

介绍

Particles.js 是一个允许您创建粒子效果的库。 这些是绘制在画布上的形状和对象,具有观察某些物理行为和交互性的能力。 这对于在不需要插图或摄影的情况下创建引人注目的背景很有用。

注意: 原始 repo 的开发似乎已停止。 最近创建了一个名为 tsParticles 的分叉。 本教程的内容已更新为使用这个新的分叉。


在本教程中,您将简要介绍该库的一些功能以及加载和修改示例配置。

先决条件

要完成本教程,您需要:

  • 现代网络浏览器。
  • 熟悉 JSON 可能有助于理解配置文件。 参考JSON简介

第 1 步 — 设置项目

出于教程目的,此示例将重点关注本地 index.html 文件和内容交付网络 (CDN) 托管的 tsParticles 库的副本。

在您的终端窗口中,创建一个新的项目目录:

mkdir tsparticles-example

然后,导航到新的项目目录:

cd tsparticles-example

接下来,创建一个 index.html 文件:

索引.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>tsParticles</title>
  <style>
  * {
    box-sizing: border-box;
  }

  html,
  body {
    margin: 0;
    padding: 0;
  }

  body {
    background-color: #212121;
  }
</style>
</head>

<body>
</body>
</html>

该库将需要一个 div 和一个 id 来连接画布。 将新的 <div id="tsparticles"> 添加到 body

索引.html

<body>
 <div id="tsparticles"></div>
</body>

然后,将 CDN 托管的库添加到 body

索引.html

<body>
  <div id="tsparticles"></div>

  <script
    src="https://cdnjs.cloudflare.com/ajax/libs/tsparticles/1.18.1/tsparticles.min.js"
    integrity="sha512-PYHWDEuXOTJ9MZ+/QHqkbgiEYZ+LImQv3i/9NyYOABFvK37e4q4Wg7aQDN1JpoGiEu1TYZh6JMrZluZox2gbDA=="
    crossorigin="anonymous"
  ></script>
</body>

笔记: tsparticles.js is also available via npm:

npm install tsparticles

接下来,通过指定应该挂钩的 id 来初始化 tsParticles(在本例中为 tsparticles):

索引.html

<body>
  <div id="tsparticles"></div>

  <script
    src="https://cdnjs.cloudflare.com/ajax/libs/tsparticles/1.18.1/tsparticles.min.js"
    integrity="sha512-PYHWDEuXOTJ9MZ+/QHqkbgiEYZ+LImQv3i/9NyYOABFvK37e4q4Wg7aQDN1JpoGiEu1TYZh6JMrZluZox2gbDA=="
    crossorigin="anonymous"
  ></script>

  <script>
    tsParticles.load('tsparticles');
  </script>
</body>

在网络浏览器中访问 index.html 时,您应该观察到几个随机散布在网页上的粒子。 验证到目前为止的一切是否按预期工作,您可以继续添加自定义选项。

第 2 步 — 加载配置

库文档列出了许多可用的 选项。 这些包括 backgroundinteractivityparticles 等。

首先,复制 default.json 并将其粘贴为 particles

索引.html

<script>
  const particles = {
    "fpsLimit": 60,
    "particles": {
      "number": {
        "value": 80,
        "density": {
          "enable": true,
          "value_area": 800
        }
      },
      "color": {
        "value": "#ff0000",
        "animation": {
          "enable": true,
          "speed": 20,
          "sync": true
        }
      },
      "shape": {
        "type": "circle",
        "stroke": {
          "width": 0
        },
        "polygon": {
          "nb_sides": 5
        },
      },
      "opacity": {
        "value": 0.5,
        "random": false,
        "anim": {
          "enable": false,
          "speed": 3,
          "opacity_min": 0.1,
          "sync": false
        }
      },
      "size": {
        "value": 3,
        "random": true,
        "anim": {
          "enable": false,
          "speed": 20,
          "size_min": 0.1,
          "sync": false
        }
      },
      "links": {
        "enable": true,
        "distance": 100,
        "color": "#ffffff",
        "opacity": 0.4,
        "width": 1
      },
      "move": {
        "enable": true,
        "speed": 6,
        "direction": "none",
        "random": false,
        "straight": false,
        "out_mode": "out",
        "attract": {
          "enable": false,
          "rotateX": 600,
          "rotateY": 1200
        }
      }
    },
    "interactivity": {
      "detect_on": "canvas",
      "events": {
        "onhover": {
          "enable": true,
          "mode": "repulse"
        },
        "onclick": {
          "enable": true,
          "mode": "push"
        },
        "resize": true
      },
      "modes": {
        "grab": {
          "distance": 400,
          "line_linked": {
            "opacity": 1
          }
        },
        "bubble": {
          "distance": 400,
          "size": 40,
          "duration": 2,
          "opacity": 0.8
        },
        "repulse": {
          "distance": 200
        },
        "push": {
          "particles_nb": 4
        },
        "remove": {
          "particles_nb": 2
        }
      }
    },
    "retina_detect": true,
    "background": {
      "color": "#000000",
      "image": "",
      "position": "50% 50%",
      "repeat": "no-repeat",
      "size": "cover"
    }
  };

  tsParticles.load('tsparticles');
</script>

tsParticles.load() 调用中使用这个新变量:

<script>
  // ...

  tsParticles.load('tsparticles', particles);
</script>

在网络浏览器中访问 index.html 时,您应该观察到由线条连接并穿过屏幕的小圆圈。

第 3 步 — 自定义配置

tsParticles 可用的选项相互影响。 您应该尝试调整值并查看它们如何影响粒子。

使用前面定义的 particles,您可以像这样修改配置的值:

索引.html

<script>
  const particles = {
    "fpsLimit": 60,
    "particles": {
      "number": {
        "value": 40,
        "density": {
          "enable": true,
          "value_area": 800
        }
      },
      "color": {
        "value": "#ff9800",
        "animation": {
          "enable": false,
          "speed": 20,
          "sync": true
        }
      },
      "shape": {
        "type": "polygon",
        "stroke": {
          "width": 2
        },
        "polygon": {
          "nb_sides": 6
        },
      },
      "opacity": {
        "value": 0.5,
        "random": false,
        "anim": {
          "enable": false,
          "speed": 3,
          "opacity_min": 0.1,
          "sync": false
        }
      },
      "size": {
        "value": <^>20<>,
        "random": true,
        "anim": {
          "enable": false,
          "speed": 20,
          "size_min": 0.1,
          "sync": false
        }
      },
      "links": {
        "enable": false,
        "distance": 100,
        "color": "#ffffff",
        "opacity": 0.4,
        "width": 1
      },
      "move": {
        "enable": true,
        "speed": 6,
        "direction": "down",
        "random": false,
        "straight": false,
        "out_mode": "out",
        "attract": {
          "enable": false,
          "rotateX": 600,
          "rotateY": 1200
        }
      }
    },
    "interactivity": {
      "detect_on": "canvas",
      "events": {
        "onhover": {
          "enable": true,
          "mode": "repulse"
        },
        "onclick": {
          "enable": true,
          "mode": "push"
        },
        "resize": true
      },
      "modes": {
        "grab": {
          "distance": 400,
          "line_linked": {
            "opacity": 1
          }
        },
        "bubble": {
          "distance": 400,
          "size": 40,
          "duration": 2,
          "opacity": 0.8
        },
        "repulse": {
          "distance": 200
        },
        "push": {
          "particles_nb": 4
        },
        "remove": {
          "particles_nb": 2
        }
      }
    },
    "retina_detect": true,
    "background": {
      "color": "#ffffff",
      "image": "",
      "position": "50% 50%",
      "repeat": "no-repeat",
      "size": "cover"
    }
  };

  tsParticles.load('tsparticles', particles);
</script>

此代码更改将使背景 color 切换为白色。 它还将粒子的 shape 从圆形更改为六边形(六边形多边形)。 更改了多边形的 numbersize。 链接的行已被删除。 directionnone 更改为 bottom

在网络浏览器中访问 index.html 时,您应该看到金色的六边形在页面下方层叠。

试验配置

为了更广泛地了解该库提供的潜力,您可以查看 tsParticles 站点上提供的各种 Samples

使用下拉菜单选择一个有趣的样本。 您可以使用此页面上的编辑器来修改值。 然后单击 Reload 以查看更改。

如果要导出更改,请单击 More,然后单击 Export Config。 这将以 JSON 格式显示配置。

注意: 其中一些演示可能需要额外的依赖项。 例如,Font Awesome 示例需要 Font Awesome 库


花一些时间将这些新配置分配给 index.html 中早期的 particle 变量,并在 Web 浏览器中刷新页面。

结论

在本教程中,您学习了如何在本地使用 tsParticles 库(以前称为 Particles.js)。

tsParticles 可用于醒目的背景。 但是,您可能需要权衡浏览器支持、慢速网络上的加载时间以及较慢计算机上的性能等因素。

如果您想了解有关 JavaScript 的更多信息,请查看 我们的 JavaScript 主题页面 以获取练习和编程项目。