Awesome
inferno-particles
Official tsParticles Inferno component
<a href="https://www.buymeacoffee.com/matteobruni"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a beer&emoji=🍺&slug=matteobruni&button_colour=5F7FFF&font_colour=ffffff&font_family=Arial&outline_colour=000000&coffee_colour=FFDD00"></a>
Installation
npm install inferno-particles
or
yarn add inferno-particles
How to use
Code
Examples:
Remote url
import Particles from "inferno-particles";
import { loadFull } from "tsparticles";
class App extends Component {
constructor(props) {
super(props);
this.particlesInit = this.particlesInit.bind(this);
this.particlesLoaded = this.particlesLoaded.bind(this);
}
particlesInit(main) {
console.log(main);
// you can initialize the tsParticles instance (main) here, adding custom shapes or presets
// this loads the tsparticles package bundle, it's the easiest method for getting everything ready
// starting from v2 you can add only the features you need reducing the bundle size
loadFull(main);
}
particlesLoaded(container) {
console.log(container);
}
render() {
return (
<Particles
id="tsparticles"
url="http://foo.bar/particles.json"
init={this.particlesInit}
loaded={this.particlesLoaded}
/>
);
}
}
Options object
import Particles from "inferno-particles";
import { loadFull } from "tsparticles";
class App extends Component {
constructor(props) {
super(props);
this.particlesInit = this.particlesInit.bind(this);
this.particlesLoaded = this.particlesLoaded.bind(this);
}
particlesInit(main) {
console.log(main);
// you can initialize the tsParticles instance (main) here, adding custom shapes or presets
// this loads the tsparticles package bundle, it's the easiest method for getting everything ready
// starting from v2 you can add only the features you need reducing the bundle size
loadFull(main);
}
particlesLoaded(container) {
console.log(container);
}
render() {
return (
<Particles
id="tsparticles"
init={this.particlesInit}
loaded={this.particlesLoaded}
options={{
background: {
color: {
value: "#0d47a1",
},
},
fpsLimit: 120,
interactivity: {
events: {
onClick: {
enable: true,
mode: "push",
},
onHover: {
enable: true,
mode: "repulse",
},
resize: true,
},
modes: {
push: {
quantity: 4,
},
repulse: {
distance: 200,
duration: 0.4,
},
},
},
particles: {
color: {
value: "#ffffff",
},
links: {
color: "#ffffff",
distance: 150,
enable: true,
opacity: 0.5,
width: 1,
},
move: {
direction: "none",
enable: true,
outMode: "bounce",
random: false,
speed: 6,
straight: false,
},
number: {
density: {
enable: true,
area: 800,
},
value: 80,
},
opacity: {
value: 0.5,
},
shape: {
type: "circle",
},
size: {
value: { min: 1, max: 5 },
},
},
detectRetina: true,
}}
/>
);
}
}
Props
Prop | Type | Definition |
---|---|---|
id | string | The id of the element. |
width | string | The width of the canvas. |
height | string | The height of the canvas. |
options | object | The options of the particles instance. |
url | string | The remote options url, called using an AJAX request |
style | object | The style of the canvas element. |
className | string | The class name of the canvas wrapper. |
canvasClassName | string | the class name of the canvas. |
container | object | The instance of the particles container |
init | function | This function is called after the tsParticles instance initialization, the instance is the parameter and you can load custom presets or shapes here |
loaded | function | This function is called when particles are correctly loaded in canvas, the current container is the parameter and you can customize it here |
Find your parameters configuration here.
Demos
The demo website is here
There's also a CodePen collection actively maintained and updated here