在本教程中,我们将深入探讨Particles.js,学习如何控制粒子运动、交互模式和事件。在前一教程中,我们已经学习了如何创建形状和大小各异的粒子。然而,粒子之间缺乏互动,它们彼此穿过,仿佛不存在其他粒子。本教程将弥补这一不足。
掌控粒子运动
并非所有粒子系统中的粒子都以随机方向移动。即使是随机运动,也存在其他作用力。例如,粒子在彼此接近时可能会加速,或在碰撞后反弹。所有这些选项都可以通过move
属性下的各种参数来控制。
如果不想让粒子移动,可以将enable
设置为false
。可以使用speed
参数指定粒子的速度。要使每个粒子以随机速度移动,将random
设置为true
。另一方面,要使它们以随机方向移动,将direction
指定为none
。
粒子最终会移动到系统边界。out_mode
参数决定粒子是反弹还是从另一个方向出现。当设置为out
时,粒子会移出画布;设置为bounce
时,粒子会在撞击边界后反弹。
粒子彼此穿过而速度不变显得不太自然。要改变每次碰撞时的粒子速度,可以将bounce
设置为true
。有趣的是,只有在启用line_linked
或attraction
属性时,此设置才有效。粒子每次碰撞都会反转方向,即使不是迎面碰撞。
最后,让我们讨论吸引力。启用吸引力后,粒子在其附近存在其他粒子时会改变速度。变化可能是正的或负的,取决于其他参数的值。每个方向的吸引力与各自参数rotateX
和rotateY
的值成反比。默认值很高,以便观察到明显的吸引力。另一方面,如果将这些值设置得太低,粒子在一段时间后会获得非常高的速度。
上面粒子运动的JSON代码如下:
"move": { "enable": true, "speed": 20, "random": true, "direction": "none", "bounce": true, "out_mode": "bounce", "attract": { "enable": true, "rotateX": 10, "rotateY": 10 } }
请记住,当同时将straight
设置为true
并将direction
设置为none
时,粒子将不会移动。
交互事件和模式
用户是否可以与粒子交互?答案是肯定的。Particles.js可以响应三个事件:hover
、click
和resize
。通过设置detect_on
参数的值,可以检测画布或窗口本身的事件。所有这些事件都将在悬停、点击或调整画布/窗口大小时触发。
当将resize
设置为true
时,粒子会在剩余空间中调整自身而不会发生变形。当resize
设置为false
时,粒子会改变形状以适应画布大小的任何变化。
"move": { "enable": true, "speed": 20, "random": true, "direction": "none", "bounce": true, "out_mode": "bounce", "attract": { "enable": true, "rotateX": 10, "rotateY": 10 } }
mode
参数定义了用户如何与粒子交互。库定义了五种交互模式:grab
、bubble
、repulse
、push
和remove
。
grab
模式在您悬停或点击的点与特定距离内的附近粒子之间创建连接线。此模式仅适用于悬停事件。下面的JSON代码绘制一条不透明度为1的线,以连接800像素内的所有粒子。
"detect_on": "canvas", "events": { "onhover": { "enable": true, "mode": "repulse" }, "onclick": { "enable": true, "mode": "push" }, "resize": true }
bubble
模式会改变特定距离内所有粒子的尺寸和不透明度,持续时间由您决定。repulse
模式使粒子远离点击的位置。这两种模式都可以添加到hover
或click
中。持续时间仅适用于这两种情况下的点击事件。
"grab": { "distance": 800, "line_linked": { "opacity": 1 } }
您可以尝试更改各种参数以使演示效果更好。
push
模式在每次鼠标点击时添加一定数量的粒子。粒子将添加到点击的位置。类似地,remove
模式会从画布中移除粒子。要移除的粒子是随机选择的。
"bubble": { "distance": 600, "size": 60, "duration": 0.1, "opacity": 1 }, "repulse": { "distance": 500, "duration": 0.5 }
总结
本系列教程涵盖了Particles.js的所有功能。为了避免您日后遇到粒子不相互反弹等问题,我还时不时地提到了一些注意事项。
如果您需要了解我们讨论的所有参数的更多信息,请参阅该库的文档。此外,如果您在使用该库时遇到问题,或者某些功能行为异常,建议您阅读源代码以了解其内部工作原理。
本文已更新,并收录了Kingsley Ubah的贡献。Kingsley热衷于创作教育和启发读者的内容。他的爱好包括阅读、足球和骑自行车。
以上是粒子:JS:运动和相互作用的详细内容。更多信息请关注PHP中文网其他相关文章!

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架

本文讨论了CSS盒装属性,该属性控制了元素维度的计算方式。它解释了诸如Content-Box,Border-Box和Padding-Box之类的值,以及它们对布局设计和形式对齐的影响。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver Mac版
视觉化网页开发工具

Dreamweaver CS6
视觉化网页开发工具