Compare commits

...

158 Commits

Author SHA1 Message Date
Vincent Garreau
d01286d6dc Update README.md 2017-03-25 18:46:21 +01:00
Vincent Garreau
e73faacfa4 Merge pull request #79 from christophersu/fix-readme
Remove duplicate table row from readme
2015-12-09 11:59:57 +01:00
Christopher Su
01ff4a6ef0 Update README.md 2015-11-27 17:23:59 -08:00
Vincent Garreau
22b4986065 Update README.md 2015-09-20 19:53:10 +02:00
Vincent Garreau
90b36f4b55 Update README.md - fix img 2015-09-20 17:40:08 +02:00
Vincent Garreau
20d58078ea Merge pull request #58 from kkirsche/patch-1
Remove moot `version` property from bower.json
2015-06-15 21:23:15 +02:00
Kevin Kirsche
7ed36a461d Remove moot version property from bower.json
Per bower/bower.json-spec@a325da3
2015-06-10 20:43:55 -04:00
Vincent Garreau
cee3b0a3da Merge branch 'dev' 2015-05-10 16:44:18 +02:00
Vincent Garreau
2b16d668ae Merge branch 'dev' 2015-05-10 16:42:52 +02:00
Vincent Garreau
c46ff7a398 Update README.md 2015-05-10 16:38:44 +02:00
Vincent Garreau
b56f5c1832 slash 2015-05-10 13:00:07 +02:00
Vincent Garreau
209117b34b update README 2015-05-10 12:54:47 +02:00
Vincent Garreau
8833f08c48 Merge branch 'dev' 2015-05-10 12:46:12 +02:00
Vincent Garreau
d6089aff46 update README 2015-05-10 12:39:27 +02:00
Vincent Garreau
858d554b2a Merge branch 'master' into dev 2015-05-10 12:36:55 +02:00
Vincent Garreau
172f5c0890 fix for release 2015-05-09 21:03:28 +02:00
Vincent Garreau
ef05b2e1af npm package 2015-05-09 20:44:44 +02:00
Vincent Garreau
acb4f2630d Update README.md 2015-05-09 14:56:47 +02:00
Vincent Garreau
e8f76d5e62 Update README.md 2015-05-09 14:56:26 +02:00
Vincent Garreau
5a03dcceb4 Update LICENSE.md 2015-05-09 14:47:49 +02:00
Vincent Garreau
3e4f236d26 Update LICENSE.md 2015-05-09 14:47:27 +02:00
Vincent Garreau
ccb79aaeff Update README.md 2015-05-09 14:33:01 +02:00
Vincent Garreau
11b1cb05da Update README.md 2015-05-09 14:11:57 +02:00
Vincent Garreau
229567ab53 Update README.md 2015-05-09 14:11:33 +02:00
Vincent Garreau
5e869d0e59 Update README.md 2015-05-09 14:08:59 +02:00
Vincent Garreau
14bf5ad13f Update README.md 2015-05-09 14:07:12 +02:00
Vincent Garreau
c8f5d04cca Update README.md 2015-05-09 14:06:37 +02:00
Vincent Garreau
1d6d392218 Update README.md 2015-05-09 14:02:09 +02:00
Vincent Garreau
438c12d5fd add particles.min.js 2.0.0 2015-05-09 12:02:55 +02:00
Vincent Garreau
677c14cfdc init particles.js 2.0.0 2015-05-09 12:02:07 +02:00
Vincent Garreau
ca71361579 Merge branch 'dev' 2015-05-09 11:58:10 +02:00
Vincent Garreau
873c7bfef1 Merge remote-tracking branch 'origin/dev' into dev
Conflicts:
	README.md
2015-05-09 02:22:45 +02:00
Vincent Garreau
246989f6f2 init particles.js 2.0.0 2015-05-09 02:22:09 +02:00
Vincent Garreau
05c0918a6c Update README.md 2015-05-05 11:07:52 +02:00
Vincent Garreau
c7ca473d09 Update README.md 2015-05-05 11:06:58 +02:00
Vincent Garreau
2425f1c652 Update README.md 2015-05-05 11:05:47 +02:00
Vincent Garreau
ae4f4b0835 support multi canvas / multi particles-js on the same page (dom) 2015-04-12 19:02:59 +02:00
Vincent Garreau
7945e55a8a support all image type (png, jpg, gif...) 2015-04-12 13:57:28 +02:00
Vincent Garreau
50edaaf3f1 particles - add opacity random 2015-04-12 02:03:38 +02:00
Vincent Garreau
b06f7e7818 add animation size particles 2015-04-12 01:24:49 +02:00
Vincent Garreau
01080daa3f rounded linked line + fix onclick event if anim disabled 2015-04-11 23:16:29 +02:00
Vincent Garreau
99b96da44c update color value [single hex, array hex or "random"] 2015-04-11 22:05:42 +02:00
Vincent Garreau
f440a63018 fix order functions 2015-04-11 20:00:43 +02:00
Vincent Garreau
37e0027b4b shape image svg / support opacity 2015-04-11 19:57:59 +02:00
Vincent Garreau
e86e097460 custom shape image (svg or png) 2015-04-11 19:48:17 +02:00
Vincent Garreau
85a93fb8bd new custom shapes: triangle, polygon, star 2015-04-11 15:47:23 +02:00
Vincent Garreau
b3bd42ea04 gem rails assets 2015-03-20 15:16:28 +01:00
Vincent Garreau
baac63556d color_random - update comment 2015-03-12 19:39:02 +01:00
Vincent Garreau
6a2c1d6fac Merge branch 'pr/46' into dev 2015-03-12 19:37:03 +01:00
Calvin Tennant
7620863e16 Opacity 2015-03-09 15:30:15 -04:00
Calvin Tennant
f07b280932 Opacity 2015-03-09 15:27:05 -04:00
Vincent Garreau
5eb25b2928 fix contributor / pr45 2015-03-05 09:10:12 +01:00
Vincent Garreau
5a962ffc0f update / fix PR 2015-03-04 19:42:10 +01:00
Vincent Garreau
6a5859b898 Merge remote-tracking branch 'origin/dev' into dev 2015-03-04 19:37:28 +01:00
Vincent Garreau
ecfb1beebc update 1.1.0 to 1.1.1 2015-03-04 19:37:27 +01:00
Vincent Garreau
4cc1441f16 Merge branch 'pr/45' into dev 2015-03-04 19:34:59 +01:00
Alexandre Rieux
bc5a26a6c6 Improve merge from parameters 2015-03-04 14:27:29 +01:00
Vincent Garreau
a9fe8ea6f3 Update particles.js 2015-02-20 11:56:07 +01:00
Vincent Garreau
06fa60071c Merge branch 'pr/41' into dev
Conflicts:
	README.md
2015-02-20 11:55:33 +01:00
Brandon Dail
c39f2d9a45 Add array selection for color_random
Added ability for Particles.js to accept an array as a value for color_random. If the value is an array it will randomly select an element from the array for the fillStyle. The values must be HEX values at the moment.
2015-02-18 15:30:11 -06:00
Vincent Garreau
80239f6988 add comment 2015-02-16 11:42:36 +01:00
Vincent Garreau
78e7ccc675 add comment 2015-02-16 11:42:08 +01:00
Vincent Garreau
096c07b5e1 update README 2015-02-16 11:41:13 +01:00
Vincent Garreau
046843abbb fix params opacity 2015-02-16 11:37:41 +01:00
Vincent Garreau
27fd772488 Update README.md 2015-02-16 11:31:58 +01:00
Vincent Garreau
88c94f559a fix opacity params 2015-02-16 11:28:44 +01:00
Vincent Garreau
ad6e18b10d fix opacity params 2015-02-16 11:27:44 +01:00
Vincent Garreau
eb31c4d507 update bower 2015-02-16 10:45:06 +01:00
Vincent Garreau
baddb4e9f4 add particles.min 2015-02-16 10:42:53 +01:00
Vincent Garreau
2d84d93f15 update bower 2015-02-16 10:41:23 +01:00
Vincent Garreau
da61f1abcc Merge pull request #40 from VincentGarreau/dev
dev - 1.1.0
2015-02-16 10:27:36 +01:00
Vincent Garreau
fe57d9b2f6 can set opacity with value or object 2015-02-16 10:22:54 +01:00
Vincent Garreau
39c6541424 opacity anim / change default values params 2015-02-16 10:12:03 +01:00
Vincent Garreau
fd550b8000 set release version to v1.1.0 2015-02-16 10:09:07 +01:00
Vincent Garreau
4f5a07e5e2 set condensed_mode to false by default 2015-02-16 09:39:15 +01:00
Vincent Garreau
49b25d71ec demo - add onresize param 2015-02-16 09:38:44 +01:00
Vincent Garreau
2b5eb9fc49 update README 2015-02-16 09:38:24 +01:00
Vincent Garreau
7a22dbec7c fix set param density_auto 2015-02-16 01:16:28 +01:00
Vincent Garreau
8faae82398 set density_auto to false by default 2015-02-16 01:12:16 +01:00
Vincent Garreau
1abda38959 add density_auto param
display nb particles (depending on canvas area)
2015-02-16 01:11:02 +01:00
Vincent Garreau
0fe5021843 add onresize param with bounce/out mode 2015-02-15 23:50:44 +01:00
Vincent Garreau
11f2f51116 remove comment 2015-02-15 23:29:44 +01:00
Vincent Garreau
b47dc6ecf8 add interactivity functions - push + remove 2015-02-15 23:29:01 +01:00
Vincent Garreau
6e09f4d9ee fix interactivity mode if it set to false 2015-02-15 23:18:44 +01:00
Vincent Garreau
0370ad4e86 fix window resize listener 2015-02-15 23:07:45 +01:00
Vincent Garreau
94c0a27882 update param opacity 2015-02-15 19:17:31 +01:00
Vincent Garreau
89492180de particles: add "opacity anim" param 2015-02-15 19:15:11 +01:00
Vincent Garreau
80a9db9fde change background color 2015-02-15 19:15:02 +01:00
Vincent Garreau
31928fd642 Update README.md 2015-02-15 18:13:26 +01:00
Vincent Garreau
c530c42162 Update README.md 2015-02-15 18:09:25 +01:00
Vincent Garreau
785ae4e973 fix destroy function - pJS object 2015-02-15 17:59:53 +01:00
Vincent Garreau
152509892b Merge branch 'pr/36' into dev 2015-02-15 17:58:27 +01:00
Vincent Garreau
59051c9b8d add stats.js + update params 2015-02-15 17:47:39 +01:00
Vincent Garreau
891c83b082 particles: add "color_random" param 2015-02-15 17:40:12 +01:00
Oliganti
efccecdf8d proper removal of pJS to avoid mouse events' errors 2014-12-22 15:15:39 +01:00
Vincent Garreau
71adda9d51 fix triangle positioning 2014-11-20 18:07:18 +01:00
Vincent Garreau
7cb86a0816 update version number 2014-11-20 18:05:47 +01:00
Vincent Garreau
b94d089445 Merge branch 'dev-local' into dev 2014-11-20 18:04:22 +01:00
Vincent Garreau
062b47a066 Merge branch 'pr/20' into dev-local
Conflicts:
	particles.js
2014-11-20 18:04:01 +01:00
Vincent Garreau
97d82786fb add credits comment 2014-11-19 20:36:21 +01:00
Vincent Garreau
b1e99292ff add particles.min.js 2014-11-19 20:35:44 +01:00
Vincent Garreau
efad15eb3b Merge pull request #29 from VincentGarreau/dev
dev - 1.0.3
2014-11-19 20:34:18 +01:00
Vincent Garreau
777e8e3da6 update version number - 1.0.3 2014-11-19 20:33:04 +01:00
Vincent Garreau
63a61b453c fix triangle positioning 2014-11-19 20:27:43 +01:00
Vincent Garreau
28339a7d45 Merge branch 'pr/26' into dev
Conflicts:
	particles.js
	particles.min.js
2014-11-19 20:24:05 +01:00
Vincent Garreau
a86f2b029f fix pixel ratio 2014-11-19 20:20:12 +01:00
Vincent Garreau
f2daa7a9a0 Merge branch 'pr/17' into dev 2014-11-19 20:15:13 +01:00
Vincent Garreau
65f6800a1b update number version 2014-11-19 20:12:50 +01:00
Vincent Garreau
6b724ffa05 fix interactivity on Firefox 2014-11-19 20:12:05 +01:00
Chad Scira
968d40249a fixed triangle positioning issue 2014-11-19 00:12:19 +07:00
as0n
b536c4ddae Used object prototype to define class method. 2014-11-18 02:53:42 +01:00
LevChurakov
609e06c8b0 Remove magic number 2014-11-17 04:32:02 +03:00
Vincent Garreau
b1da10f16f update particles.min.js 2014-11-16 19:19:31 +01:00
Vincent Garreau
04198e139a add conditions 2014-11-16 19:18:39 +01:00
Vincent Garreau
46116efc18 add conditions 2014-11-16 19:17:55 +01:00
Vincent Garreau
028f5e9c80 add credits 2014-11-16 18:36:44 +01:00
Vincent Garreau
36de8d5d37 e.page to e.client 2014-11-16 18:32:36 +01:00
Vincent Garreau
80ace842cd e.page to e.client
fix in case of particles-js element is set to « fixed » with window
scroll
2014-11-16 18:30:58 +01:00
Vincent Garreau
0cc0406dbf delete particles.min.js 2014-11-16 18:00:18 +01:00
Vincent Garreau
514e94eaea fix / on window detect 2014-11-16 18:00:00 +01:00
Vincent Garreau
88d5f02231 fix / on window detect 2014-11-16 17:56:47 +01:00
Vincent Garreau
8e751d8009 Update README.md 2014-11-16 17:19:48 +01:00
Vincent Garreau
57a4c81f7e Update README.md 2014-11-16 16:59:41 +01:00
Vincent Garreau
7f13afbb1a Merge branch 'dev'
Conflicts:
	README.md
	bower.json
	demo/js/app.js
	particles.js
	particles.min.js
2014-11-16 16:52:05 +01:00
Vincent Garreau
c2f2f55e10 update readme 2014-11-16 16:46:49 +01:00
Vincent Garreau
3566e954fb remove break space 2014-11-16 16:45:39 +01:00
Vincent Garreau
329db9457c add particles.min.js 2014-11-16 16:44:40 +01:00
Vincent Garreau
340102b22d fix bug - replace e.page to e.offset on mousemove 2014-11-16 16:33:17 +01:00
Vincent Garreau
f1ff2956a2 update condition
lighter / can set 4 (number) or « 4 » (string)
2014-11-16 13:53:14 +01:00
Vincent Garreau
f71c3d7c69 update version number - 1.0.2 2014-11-16 13:44:29 +01:00
Vincent Garreau
9c7500b16f update readme 2014-11-16 13:42:20 +01:00
Vincent Garreau
da02727023 add comments 2014-11-16 13:38:26 +01:00
Vincent Garreau
dff20005d1 Delete particles.min.js 2014-11-16 13:31:54 +01:00
Vincent Garreau
6fb98e492e Merge pull request #14 from thechunsik/dev
added an event for removing particles
2014-11-16 13:31:39 +01:00
thechunsik
25185e8b32 added an event for removing particles
- added an option for onclick event - push or remove(i thought that it needs controllers but if that, it might not lightweight library anymore)
- created variables for multiple comparisons when getting params(you dont have to adopt it if it doesnt need those variables)
2014-11-16 20:23:48 +09:00
Vincent Garreau
df1d2a6a02 Update bower.json 2014-11-16 01:55:21 +01:00
Vincent Garreau
f9ea2cf4cd Update bower.json 2014-11-16 01:55:06 +01:00
Vincent Garreau
4b14e7409a update demo + readme 2014-11-16 01:50:22 +01:00
Vincent Garreau
352b23c08a Update README.md 2014-11-16 01:48:28 +01:00
Vincent Garreau
84521cd733 update demo 2014-11-16 01:47:08 +01:00
Vincent Garreau
2909def685 add version number 2014-11-16 01:29:14 +01:00
Vincent Garreau
67839bd385 add version number 2014-11-16 01:28:19 +01:00
Vincent Garreau
3392d20450 Update README.md 2014-11-16 00:41:54 +01:00
Vincent Garreau
0f36924458 Merge pull request #13 from VincentGarreau/dev
release 1.0.1
2014-11-16 00:37:50 +01:00
Vincent Garreau
6b28ee7ab1 add particles.min.js 2014-11-16 00:34:54 +01:00
Vincent Garreau
fef066e075 update demo / fix name space 2014-11-16 00:20:01 +01:00
Vincent Garreau
0c55188914 Merge branch 'pr/11' into dev
Conflicts:
	particles.js
2014-11-16 00:14:23 +01:00
Vincent Garreau
61a9fa5a21 new feature: push particles on click 2014-11-16 00:10:45 +01:00
Vincent Garreau
87eb8feb39 update demo - display all params 2014-11-16 00:10:08 +01:00
Vincent Garreau
a678141512 delete particles.min.js 2014-11-16 00:09:40 +01:00
Vincent Garreau
385bebcf6f update demo (show all params) 2014-11-15 23:35:45 +01:00
Vincent Garreau
d0ab549606 add destroy method + opacity of interactive lines 2014-11-15 23:35:45 +01:00
Vincent Garreau
c37cb84984 Delete particles.min.js 2014-11-15 17:32:45 +01:00
as0n
a65428e2a5 Various code optimizations. 2014-11-14 20:07:14 +01:00
thechunsik
99c653181c added an argument - position 2014-11-14 14:36:09 +09:00
thechunsik
db003d32ae added an click event
- create a new particle on the position user click on
2014-11-14 14:29:06 +09:00
Vincent Garreau
41cc87ed82 Merge pull request #7 from jzjzjzj/patch-1
Added GitHub demo link.
2014-11-13 12:06:13 +01:00
Jānis
a5554abf78 Added GitHub demo link. 2014-11-13 08:00:48 +02:00
12 changed files with 2235 additions and 521 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
particles.min.js

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014, Vincent Garreau
Copyright (c) 2015, Vincent Garreau
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
THE SOFTWARE.

266
README.md
View File

@ -2,6 +2,20 @@
### A lightweight JavaScript library for creating particles.
------------------------------
### `Demo / Generator`
<a href="http://vincentgarreau.com/particles.js/" target="_blank"><img src="http://vincentgarreau.com/particles.js/assets/img/github-screen.jpg" alt="particles.js generator" /></a>
Configure, export, and share your particles.js configuration on CodePen: <br />
http://vincentgarreau.com/particles.js/
CodePen demo: <br />
http://codepen.io/VincentGarreau/pen/pnlso
-------------------------------
### `Usage`
Load particles.js and configure the particles:
**index.html**
@ -13,47 +27,217 @@ Load particles.js and configure the particles:
**app.js**
```javascript
/* particlesJS('dom-id', params);
/* @dom-id : set the html tag id [string, optional, default value : particles-js]
/* @params: set the params [object, optional, default values : check particles.js] */
particlesJS('particles-js', {
particles: {
color: '#fff',
shape: 'circle', // "circle", "edge" or "triangle"
opacity: 0.5,
size: 2,
size_random: true,
nb: 200,
line_linked: {
enable_auto: true,
distance: 250,
color: '#fff',
opacity: 0.5,
width: 1,
condensed_mode: {
enable: true,
rotateX: 600,
rotateY: 600
}
},
anim: {
enable: true,
speed: 2
}
},
interactivity: {
enable: false,
mouse: {
distance: 250
},
detect_on: 'canvas', // "canvas" or "window"
mode: 'grab'
},
/* Retina Display Support */
retina_detect: false
/* particlesJS.load(@dom-id, @path-json, @callback (optional)); */
particlesJS.load('particles-js', 'assets/particles.json', function() {
console.log('callback - particles.js config loaded');
});
```
### ***Live Demo***
<a href="http://codepen.io/VincentGarreau/pen/pnlso" target="_blank">CodePen demo</a>
**particles.json**
```javascript
{
"particles": {
"number": {
"value": 80,
"density": {
"enable": true,
"value_area": 800
}
},
"color": {
"value": "#ffffff"
},
"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": {
"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
}
```
-------------------------------
### `Options`
key | option type / notes | example
----|---------|------
`particles.number.value` | number | `40`
`particles.number.density.enable` | boolean | `true` / `false`
`particles.number.density.value_area` | number | `800`
`particles.color.value` | HEX (string) <br /> RGB (object) <br /> HSL (object) <br /> array selection (HEX) <br /> random (string) | `"#b61924"` <br /> `{r:182, g:25, b:36}` <br /> `{h:356, s:76, l:41}` <br /> `["#b61924", "#333333", "999999"]` <br /> `"random"`
`particles.shape.type` | string <br /> array selection | `"circle"` <br /> `"edge"` <br /> `"triangle"` <br /> `"polygon"` <br /> `"star"` <br /> `"image"` <br /> `["circle", "triangle", "image"]`
`particles.shape.stroke.width` | number | `2`
`particles.shape.stroke.color` | HEX (string) | `"#222222"`
`particles.shape.polygon.nb_slides` | number | `5`
`particles.shape.image.src` | path link <br /> svg / png / gif / jpg | `"assets/img/yop.svg"` <br /> `"http://mywebsite.com/assets/img/yop.png"`
`particles.shape.image.width` | number <br />(for aspect ratio) | `100`
`particles.shape.image.height` | number <br />(for aspect ratio) | `100`
`particles.opacity.value` | number (0 to 1) | `0.75`
`particles.opacity.random` | boolean | `true` / `false`
`particles.opacity.anim.enable` | boolean | `true` / `false`
`particles.opacity.anim.speed` | number | `3`
`particles.opacity.anim.opacity_min` | number (0 to 1) | `0.25`
`particles.opacity.anim.sync` | boolean | `true` / `false`
`particles.size.value` | number | `20`
`particles.size.random` | boolean | `true` / `false`
`particles.size.anim.enable` | boolean | `true` / `false`
`particles.size.anim.speed` | number | `3`
`particles.size.anim.size_min` | number | `0.25`
`particles.size.anim.sync` | boolean | `true` / `false`
`particles.line_linked.enable` | boolean | `true` / `false`
`particles.line_linked.distance` | number | `150`
`particles.line_linked.color` | HEX (string) | `#ffffff`
`particles.line_linked.opacity` | number (0 to 1) | `0.5`
`particles.line_linked.width` | number | `1.5`
`particles.move.enable` | boolean | `true` / `false`
`particles.move.speed` | number | `4`
`particles.move.direction` | string | `"none"` <br /> `"top"` <br /> `"top-right"` <br /> `"right"` <br /> `"bottom-right"` <br /> `"bottom"` <br /> `"bottom-left"` <br /> `"left"` <br /> `"top-left"`
`particles.move.random` | boolean | `true` / `false`
`particles.move.straight` | boolean | `true` / `false`
`particles.move.out_mode` | string <br /> (out of canvas) | `"out"` <br /> `"bounce"`
`particles.move.bounce` | boolean <br /> (between particles) | `true` / `false`
`particles.move.attract.enable` | boolean | `true` / `false`
`particles.move.attract.rotateX` | number | `3000`
`particles.move.attract.rotateY` | number | `1500`
`interactivity.detect_on` | string | `"canvas", "window"`
`interactivity.events.onhover.enable` | boolean | `true` / `false`
`interactivity.events.onhover.mode` | string <br /> array selection | `"grab"` <br /> `"bubble"` <br /> `"repulse"` <br /> `["grab", "bubble"]`
`interactivity.events.onclick.enable` | boolean | `true` / `false`
`interactivity.events.onclick.mode` | string <br /> array selection | `"push"` <br /> `"remove"` <br /> `"bubble"` <br /> `"repulse"` <br /> `["push", "repulse"]`
`interactivity.events.resize` | boolean | `true` / `false`
`interactivity.events.modes.grab.distance` | number | `100`
`interactivity.events.modes.grab.line_linked.opacity` | number (0 to 1) | `0.75`
`interactivity.events.modes.bubble.distance` | number | `100`
`interactivity.events.modes.bubble.size` | number | `40`
`interactivity.events.modes.bubble.duration` | number <br /> (second) | `0.4`
`interactivity.events.modes.repulse.distance` | number | `200`
`interactivity.events.modes.repulse.duration` | number <br /> (second) | `1.2`
`interactivity.events.modes.push.particles_nb` | number | `4`
`interactivity.events.modes.push.particles_nb` | number | `4`
`retina_detect` | boolean | `true` / `false`
-------------------------------
### `Packages install`
##### ***npm***
https://www.npmjs.com/package/particles.js
```
npm install particles.js
```
##### ***Bower***
```
bower install particles.js --save
```
##### ***Rails Assets***
```
gem 'rails-assets-particles.js'
```
##### ***Meteor***
https://atmospherejs.com/newswim/particles
```
meteor add newswim:particles
```
-------------------------------
### `Hosting / CDN`
***Please use this host or your own to load particles.js on your projects***
http://www.jsdelivr.com/#!particles.js

View File

@ -1,7 +1,6 @@
{
"name": "particles.js",
"main": "particles.js",
"version": "1.0.0",
"homepage": "https://github.com/VincentGarreau/particles.js",
"authors": [
"Vincent Garreau <vin.garreau@gmail.com>"

View File

@ -22,19 +22,75 @@ li{list-style:none}
My CSS
========================================================================== */
/* ---- base ---- */
html,body{
width:100%;
height:100%;
background:#000;
background:#111;
}
/* remove canvas default margin */
canvas{
display:block;
vertical-align:bottom;
html{
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body{
font:normal 75% Arial, Helvetica, sans-serif;
}
canvas{
display:block;
vertical-align:bottom;
}
/* ---- stats.js ---- */
.count-particles{
background: #000022;
position: absolute;
top: 48px;
left: 0;
width: 80px;
color: #13E8E9;
font-size: .8em;
text-align: left;
text-indent: 4px;
line-height: 14px;
padding-bottom: 2px;
font-family: Helvetica, Arial, sans-serif;
font-weight: bold;
}
.js-count-particles{
font-size: 1.1em;
}
#stats,
.count-particles{
-webkit-user-select: none;
margin-top: 5px;
margin-left: 5px;
}
#stats{
border-radius: 3px 3px 0 0;
overflow: hidden;
}
.count-particles{
border-radius: 0 0 3px 3px;
}
/* ---- particles.js container ---- */
#particles-js{
width:100%;
height:100%;
}
width: 100%;
height: 100%;
background-color: #b61924;
background-image: url('');
background-size: cover;
background-position: 50% 50%;
background-repeat: no-repeat;
}

View File

@ -1,18 +1,48 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>particles.js</title>
<meta name="description" content="particles.js is a lightweight JavaScript library for creating particles.">
<meta name="author" content="Vincent Garreau" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" media="screen" href="css/style.css">
<meta charset="utf-8">
<title>particles.js</title>
<meta name="description" content="particles.js is a lightweight JavaScript library for creating particles.">
<meta name="author" content="Vincent Garreau" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" media="screen" href="css/style.css">
</head>
<body>
<!-- count particles -->
<div class="count-particles">
<span class="js-count-particles">--</span> particles
</div>
<!-- particles.js container -->
<div id="particles-js"></div>
<!-- scripts -->
<script src="../particles.js"></script>
<script src="js/app.js"></script>
<!-- stats.js -->
<script src="js/lib/stats.js"></script>
<script>
var count_particles, stats, update;
stats = new Stats;
stats.setMode(0);
stats.domElement.style.position = 'absolute';
stats.domElement.style.left = '0px';
stats.domElement.style.top = '0px';
document.body.appendChild(stats.domElement);
count_particles = document.querySelector('.js-count-particles');
update = function() {
stats.begin();
stats.end();
if (window.pJSDom[0].pJS.particles && window.pJSDom[0].pJS.particles.array) {
count_particles.innerText = window.pJSDom[0].pJS.particles.array.length;
}
requestAnimationFrame(update);
};
requestAnimationFrame(update);
</script>
</body>
</html>

View File

@ -1,24 +1,133 @@
/* default dom id (particles-js) */
//particlesJS();
/* -----------------------------------------------
/* How to use? : Check the GitHub README
/* ----------------------------------------------- */
/* config dom id */
//particlesJS('dom-id');
/* config dom id (optional) + config particles params */
particlesJS('particles-js', {
canvas: {
color_hex_bg: '#15414e',
opacity: 1
},
particles: {
color_hex: '#fff',
opacity: 1,
size: 2.5,
size_random: true,
nb: 200,
anim: {
speed: 2
}
},
retina_detect: true
/* To load a config file (particles.json) you need to host this demo (MAMP/WAMP/local)... */
/*
particlesJS.load('particles-js', 'particles.json', function() {
console.log('particles.js loaded - callback');
});
*/
/* Otherwise just put the config content (json): */
particlesJS('particles-js',
{
"particles": {
"number": {
"value": 80,
"density": {
"enable": true,
"value_area": 800
}
},
"color": {
"value": "#ffffff"
},
"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": 5,
"random": true,
"anim": {
"enable": false,
"speed": 40,
"size_min": 0.1,
"sync": false
}
},
"line_linked": {
"enable": true,
"distance": 150,
"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": 8,
"speed": 3
},
"repulse": {
"distance": 200
},
"push": {
"particles_nb": 4
},
"remove": {
"particles_nb": 2
}
}
},
"retina_detect": true,
"config_demo": {
"hide_card": false,
"background_color": "#b61924",
"background_image": "",
"background_position": "50% 50%",
"background_repeat": "no-repeat",
"background_size": "cover"
}
}
);

149
demo/js/lib/stats.js Normal file
View File

@ -0,0 +1,149 @@
/**
* @author mrdoob / http://mrdoob.com/
*/
var Stats = function () {
var startTime = Date.now(), prevTime = startTime;
var ms = 0, msMin = Infinity, msMax = 0;
var fps = 0, fpsMin = Infinity, fpsMax = 0;
var frames = 0, mode = 0;
var container = document.createElement( 'div' );
container.id = 'stats';
container.addEventListener( 'mousedown', function ( event ) { event.preventDefault(); setMode( ++ mode % 2 ) }, false );
container.style.cssText = 'width:80px;opacity:0.9;cursor:pointer';
var fpsDiv = document.createElement( 'div' );
fpsDiv.id = 'fps';
fpsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#002';
container.appendChild( fpsDiv );
var fpsText = document.createElement( 'div' );
fpsText.id = 'fpsText';
fpsText.style.cssText = 'color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';
fpsText.innerHTML = 'FPS';
fpsDiv.appendChild( fpsText );
var fpsGraph = document.createElement( 'div' );
fpsGraph.id = 'fpsGraph';
fpsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0ff';
fpsDiv.appendChild( fpsGraph );
while ( fpsGraph.children.length < 74 ) {
var bar = document.createElement( 'span' );
bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#113';
fpsGraph.appendChild( bar );
}
var msDiv = document.createElement( 'div' );
msDiv.id = 'ms';
msDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#020;display:none';
container.appendChild( msDiv );
var msText = document.createElement( 'div' );
msText.id = 'msText';
msText.style.cssText = 'color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px';
msText.innerHTML = 'MS';
msDiv.appendChild( msText );
var msGraph = document.createElement( 'div' );
msGraph.id = 'msGraph';
msGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0f0';
msDiv.appendChild( msGraph );
while ( msGraph.children.length < 74 ) {
var bar = document.createElement( 'span' );
bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#131';
msGraph.appendChild( bar );
}
var setMode = function ( value ) {
mode = value;
switch ( mode ) {
case 0:
fpsDiv.style.display = 'block';
msDiv.style.display = 'none';
break;
case 1:
fpsDiv.style.display = 'none';
msDiv.style.display = 'block';
break;
}
};
var updateGraph = function ( dom, value ) {
var child = dom.appendChild( dom.firstChild );
child.style.height = value + 'px';
};
return {
REVISION: 12,
domElement: container,
setMode: setMode,
begin: function () {
startTime = Date.now();
},
end: function () {
var time = Date.now();
ms = time - startTime;
msMin = Math.min( msMin, ms );
msMax = Math.max( msMax, ms );
msText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')';
updateGraph( msGraph, Math.min( 30, 30 - ( ms / 200 ) * 30 ) );
frames ++;
if ( time > prevTime + 1000 ) {
fps = Math.round( ( frames * 1000 ) / ( time - prevTime ) );
fpsMin = Math.min( fpsMin, fps );
fpsMax = Math.max( fpsMax, fps );
fpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')';
updateGraph( fpsGraph, Math.min( 30, 30 - ( fps / 100 ) * 30 ) );
prevTime = time;
frames = 0;
}
return time;
},
update: function () {
startTime = this.end();
}
}
};
if ( typeof module === 'object' ) {
module.exports = Stats;
}

116
demo/particles.json Normal file
View File

@ -0,0 +1,116 @@
{
"particles": {
"number": {
"value": 80,
"density": {
"enable": true,
"value_area": 800
}
},
"color": {
"value": "#ffffff"
},
"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": 5,
"random": true,
"anim": {
"enable": false,
"speed": 40,
"size_min": 0.1,
"sync": false
}
},
"line_linked": {
"enable": true,
"distance": 150,
"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": 8,
"speed": 3
},
"repulse": {
"distance": 200
},
"push": {
"particles_nb": 4
},
"remove": {
"particles_nb": 2
}
}
},
"retina_detect": true,
"config_demo": {
"hide_card": false,
"background_color": "#b61924",
"background_image": "",
"background_position": "50% 50%",
"background_repeat": "no-repeat",
"background_size": "cover"
}
}

28
package.json Normal file
View File

@ -0,0 +1,28 @@
{
"name": "particles.js",
"version": "2.0.0",
"description": "A lightweight JavaScript library for creating particles",
"homepage": "http://vincentgarreau.com/particles.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/VincentGarreau/particles.js.git"
},
"keywords": [
"particles",
"particle",
"canvas"
],
"author": "Vincent Garreau",
"license": "MIT",
"files": [
"particles.js",
"particles.min.js"
],
"bugs": {
"url": "https://github.com/VincentGarreau/particles.js/issues"
},
"homepage": "https://github.com/VincentGarreau/particles.js"
}

File diff suppressed because it is too large Load Diff

54
particles.min.js vendored

File diff suppressed because one or more lines are too long