jparticles
Version:
A lightweight, efficient and easy-to-use Canvas library for building some cool particle effects.
90 lines (72 loc) • 2.49 kB
TypeScript
import type { ShapeData } from '../common/shape'
import type { CommonConfig } from './common-config'
export interface Options extends Partial<CommonConfig> {
// 粒子个数,默认为容器宽度的 0.12 倍
// (0, 1) 显示为容器宽度相应倍数的个数,0 & [1, +∞) 显示具体个数
// 0 是没有意义的
num: number
// 粒子最大半径(0, +∞)
maxR: number
// 粒子最小半径(0, +∞)
minR: number
// 粒子最大运动速度(0, +∞)
maxSpeed: number
// 粒子最小运动速度(0, +∞)
minSpeed: number
// 两点连线的最大值
// 在 range 范围内的两点距离小于 proximity,则两点之间连线
// (0, 1) 显示为容器宽度相应倍数的个数,0 & [1, +∞) 显示具体个数
proximity: number
// 定位点的范围,范围越大连线越多
// 当 range 等于 0 时,不连线,相关值无效
// (0, 1) 显示为容器宽度相应倍数的个数,0 & [1, +∞) 显示具体个数
range: number
// 线段的宽度
lineWidth: number
// 连线的形状
// spider: 散开的蜘蛛状
// cube: 合拢的立方体状
lineShape: 'spider' | 'cube'
// 改变定位点坐标的事件元素
// null 表示 canvas 画布,或传入原生元素对象,如 document 等
eventElem: null | HTMLDocument | HTMLElement
// 视差效果
parallax: boolean
// 定义粒子在视差图层里的层数及每层的层级大小,类似 css 里的 z-index。
// 取值范围: [0, +∞),值越小视差效果越强烈,0 则不动。
// 定义四层粒子示例:[1, 3, 5, 10]
parallaxLayer: number[]
// 视差强度,值越小视差效果越强烈
parallaxStrength: number
// 粒子是否自旋
spin: boolean
// 粒子最大运动角速度(0, 360)
spinMaxSpeed: number
// 粒子最小运动角速度(0, 360)
spinMinSpeed: number
}
export interface IElement {
// 粒子半径
r: number
// 粒子 x 坐标
x: number
// 粒子 y 坐标
y: number
// 每次绘制时,粒子在 x 轴方向的步进值,正负值
vx: number
// 每次绘制时,粒子在 y 轴方向的步进值,正负值
vy: number
// 粒子的旋转角度
rotate: number
// 粒子的旋转速度
rotateSpeed: number
// 粒子颜色
color: string
// 形状数据
shape: ShapeData
// 粒子在视差图层里的层数及每层的层级大小
parallaxLayer: number
// 粒子视差偏移值
parallaxOffsetX: number
parallaxOffsetY: number
}