1.17.4 • Published 4 years ago

xparticles.js v1.17.4

Weekly downloads
5
License
MIT
Repository
github
Last release
4 years ago

TypeScript Particles

tsParticles

Slack tsParticles - A lightweight TypeScript library for creating particles | Product Hunt Embed

CodeFactor Codacy Badge

API documentation and Development references here: https://particles.matteobruni.it/docs/

A lightweight TypeScript library for creating particles

Particles.js converted in TypeScript, improved with new cool features and various bugs fixed and it's currently under development!

BranchBuild Status
MasterMaster Build Status
StagingStaging Build Status
DevDev Build Status

tsParticles demo


Packages install

npm

npmjs

npm install tsparticles

NuGet

Nuget


Hosting / CDN

Please use this host or your own to load tsparticles on your projects

jsDelivr

Usage

Load tsParticles and configure the particles:

tsParticles demo

index.html

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

<script src="tsparticles.min.js"></script>

app.js

// @path-json can be an object or an array, the first will be loaded directly, the object from the array will be random selected
/* tsParticles.loadJSON(@dom-id, @path-json, @callback (optional)); */
tsParticles.loadJSON("tsparticles", "presets/default.json").then((container) => {
  console.log("callback - tsparticles config loaded");
}).catch((error) => {
  console.error(error);
});

//or

/* tsParticles.load(@dom-id, @options); */
tsParticles.load("tsparticles", { /* options here */ });

//or

/* tsParticles.loadFromArray(@dom-id, @options, @index (optional)); */
tsParticles.loadFromArray("tsparticles", [ { /* options here */ }, { /* other options here */ }]); //random object
tsParticles.loadFromArray("tsparticles", [ { /* options here */ }, { /* other options here */ }], 1); //the second one
// Important! If the index is not in range 0...array.length, the index will be ignored.

// after initialization this can be used.

/* tsParticles.setOnClickHandler(@callback); */
/* this will be fired from all particles loaded */
tsParticles.setOnClickHandler((e) => { /* custom on click handler */ });

Demo / Generator

https://particles.matteobruni.it/

Particles demo


Characters as particles

Particles demo


Mouse hover connections

Particles demo


Polygon mask

tsParticles demo


Animated stars

Particles demo


Nyan cat flying on scrolling stars

Particles demo


Snow particles

tsParticles demo


COVID-19 SARS-CoV-2 particles

tsParticles demo

Don't click! DON'T CLICK! OH NO IT'S SPREADING!!!!


particles.json

{
  "particles": {
    "color": {
      "value": "#ffffff"
    },
    "number": {
      "value": 80,
      "limit": 200,
      "density": {
        "enable": true,
        "value_area": 800
      }
    },
    "shape": {
      "type": "circle",
      "stroke": {
        "width": 0,
        "color": "#000000"
      },
      "polygon": {
        "nb_sides": 5
      },
      "image": {
        "src": "img/github.svg",
        "width": 100,
        "height": 100
      }
    },
    "opacity": {
      "value": 0.5,
      "random": false,
      "anim": {
        "enable": false,
        "speed": 1,
        "opacity_min": 0.1,
        "sync": false
      }
    },
    "size": {
      "value": 10,
      "random": true,
      "anim": {
        "enable": false,
        "speed": 80,
        "size_min": 0.1,
        "sync": false
      }
    },
    "line_linked": {
      "enable": true,
      "distance": 300,
      "color": "#ffffff",
      "opacity": 0.4,
      "width": 2
    },
    "move": {
      "enable": true,
      "speed": 12,
      "direction": "none",
      "random": false,
      "straight": false,
      "out_mode": "out",
      "bounce": false,
      "attract": {
        "enable": false,
        "rotateX": 600,
        "rotateY": 1200
      }
    }
  },
  "interactivity": {
    "detect_on": "canvas",
    "events": {
      "onhover": {
        "enable": false,
        "mode": "repulse"
      },
      "onclick": {
        "enable": true,
        "mode": "push"
      },
      "resize": true
    },
    "modes": {
      "connect": {
        "distance": 80,
        "lineLinked": {
          "opacity": 0.5
        },
        "radius": 60
      },
      "grab": {
        "distance": 800,
        "line_linked": {
          "opacity": 1
        }
      },
      "bubble": {
        "distance": 800,
        "size": 80,
        "duration": 2,
        "opacity": 0.8,
        "speed": 3
      },
      "repulse": {
        "distance": 400,
        "duration": 0.4
      },
      "push": {
        "particles_nb": 4
      },
      "remove": {
        "particles_nb": 2
      }
    }
  },
  "retina_detect": true,
  "fps_limit": 60,
  "polygon": {
    "debug": {
      "enable": true,
      "color": "#000000"
    },
    "type": "inside",
    "move": {
      "radius": 10
    },
    "url": "demo/svg/deer.svg"
  }
}

Options

keyoption type / notesexample
particles.number.valuenumber40
particles.number.limitnumber200 / 0 or less disables the limit
particles.number.density.enablebooleantrue / false
particles.number.density.areanumber800
particles.color.valueHEX (string) RGB (object) HSL (object) array selection (HEX) random (string)"#b61924" {r:182, g:25, b:36} {h:356, s:76, l:41} ["#b61924", "#333333", "999999"] "random"
particles.shape.typestring array selection"circle" "line" "edge" "triangle" "polygon" "star" "image" ["circle", "triangle", "image"]
particles.shape.stroke.widthnumber2
particles.shape.stroke.colorHEX (string) random (string)"#222222" "random"
particles.shape.polygon.sidesnumber5
particles.shape.imageobject / arrayA single image object like below or an array of the same objects
particles.shape.image.srcpath link svg / png / gif / jpg"assets/img/yop.svg" "http://mywebsite.com/assets/img/yop.png"
particles.shape.image.widthnumber (for aspect ratio)100
particles.shape.image.heightnumber (for aspect ratio)100
particles.opacity.valuenumber (0 to 1)0.75
particles.opacity.randombooleantrue / false
particles.opacity.animation.enablebooleantrue / false
particles.opacity.animation.speednumber3
particles.opacity.animation.minimumValuenumber (0 to 1)0.25
particles.opacity.animation.syncbooleantrue / false
particles.size.valuenumber20
particles.size.randombooleantrue / false
particles.size.animation.enablebooleantrue / false
particles.size.animation.speednumber3
particles.size.animation.minimumValuenumber0.25
particles.size.animation.syncbooleantrue / false
particles.lineLinked.enablebooleantrue / false
particles.lineLinked.distancenumber150
particles.lineLinked.colorHEX (string) random (string)#ffffff "random"
particles.lineLinked.opacitynumber (0 to 1)0.5
particles.lineLinked.widthnumber1.5
particles.move.enablebooleantrue / false
particles.move.speednumber4
particles.move.directionstring"none" "top" "top-right" "right" "bottom-right" "bottom" "bottom-left" "left" "top-left"
particles.move.randombooleantrue / false
particles.move.straightbooleantrue / false
particles.move.outModestring (out of canvas)"out" "destroy" "bounce" "bounce-vertical" "bounce-horizontal"
particles.move.bounceboolean (between particles)true / false
particles.move.attract.enablebooleantrue / false
particles.move.attract.rotateXnumber3000
particles.move.attract.rotateYnumber1500
interactivity.detectsOnstring"canvas", "window","parent"
interactivity.events.onHover.enablebooleantrue / false
interactivity.events.onHover.modestring array selection"grab" "bubble" "repulse" "connect" ["grab", "bubble"]
interactivity.events.onClick.enablebooleantrue / false
interactivity.events.onClick.modestring array selection"push" "remove" "bubble" "repulse" ["push", "repulse"]
interactivity.events.onDiv.mnodestring array selection"repulse" ["repulse"]
interactivity.events.onDiv.enablebooleantrue / false
interactivity.events.onDiv.elstringrepulse-div
interactivity.events.resizebooleantrue / false
interactivity.events.modes.connect.distancenumber100
interactivity.events.modes.connect.radiusnumber60
interactivity.events.modes.connect.lineLinked.opacitynumber (0 to 1)0.75
interactivity.events.modes.grab.distancenumber100
interactivity.events.modes.grab.lineLinked.opacitynumber (0 to 1)0.75
interactivity.events.modes.bubble.distancenumber100
interactivity.events.modes.bubble.sizenumber40
interactivity.events.modes.bubble.durationnumber (second)0.4
interactivity.events.modes.repulse.distancenumber200
interactivity.events.modes.repulse.durationnumber (second)1.2
interactivity.events.modes.push.quantitynumber4
interactivity.events.modes.remove.quantitynumber4
detectRetinabooleantrue / false
fpsLimitnumber60
polygon.draw.enablebooleantrue / false
polygon.draw.lineWidthnumber0.5
polygon.draw.lineColorHEX (string)#ffffff
polygon.scalenumber1
polygon.typestringnone / inside / outside / inline
polygon.move.radiusnumber10
polygon.urlstringdemo/svg/deer.svg
1.17.4

4 years ago

1.14.3

4 years ago

1.14.2

4 years ago

1.14.1

4 years ago

1.14.0

4 years ago

1.13.6

4 years ago

1.13.5

4 years ago

1.13.0

4 years ago

1.12.10

4 years ago

1.12.7

4 years ago

1.12.5

4 years ago

1.12.3

4 years ago

1.12.2

4 years ago

1.12.1

4 years ago

1.11.2

4 years ago

1.11.1

4 years ago

1.11.0

4 years ago

1.10.3

4 years ago

1.7.1

4 years ago