Compare commits

...

123 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
12 changed files with 2078 additions and 448 deletions

1
.gitignore vendored Normal file
View File

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

View File

@ -1,6 +1,6 @@
The MIT License (MIT) 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 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 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.

299
README.md
View File

@ -2,6 +2,20 @@
### A lightweight JavaScript library for creating particles. ### 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: Load particles.js and configure the particles:
**index.html** **index.html**
@ -13,82 +27,217 @@ Load particles.js and configure the particles:
**app.js** **app.js**
```javascript ```javascript
/* particlesJS('dom-id', params); /* particlesJS.load(@dom-id, @path-json, @callback (optional)); */
/* @dom-id : set the html tag id [string, optional, default value : particles-js] particlesJS.load('particles-js', 'assets/particles.json', function() {
/* @params: set the params [object, optional, default values : check particles.js] */ console.log('callback - particles.js config loaded');
/* default dom id (particles-js) */
//particlesJS();
/* config dom id */
//particlesJS('dom-id');
/* config dom id (optional) + config particles params */
particlesJS('particles-js', {
particles: {
color: '#fff',
shape: 'circle', // "circle", "edge" or "triangle"
opacity: 1,
size: 4,
size_random: true,
<<<<<<< HEAD
nb: 100,
=======
nb: 150,
>>>>>>> dev
line_linked: {
enable_auto: true,
distance: 100,
color: '#fff',
opacity: 1,
width: 1,
condensed_mode: {
enable: false,
rotateX: 600,
rotateY: 600
}
},
anim: {
enable: true,
speed: 1
}
},
interactivity: {
enable: true,
mouse: {
<<<<<<< HEAD
distance: 250
=======
distance: 300
>>>>>>> dev
},
detect_on: 'canvas', // "canvas" or "window"
mode: 'grab',
line_linked: {
opacity: .5
},
events: {
onclick: {
<<<<<<< HEAD
push_particles: {
enable: true,
nb: 4
}
}
=======
enable: true,
mode: 'push', // "push" or "remove"
nb: 4
}
>>>>>>> dev
}
},
/* Retina Display Support */
retina_detect: true
}); });
``` ```
### ***Live Demo*** **particles.json**
<a href="http://codepen.io/VincentGarreau/pen/pnlso" target="_blank">CodePen demo</a> ```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
}
```
<a href="http://htmlpreview.github.io/?https://github.com/VincentGarreau/particles.js/blob/master/demo/index.html" target="_blank">GitHub demo</a> -------------------------------
### `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", "name": "particles.js",
"main": "particles.js", "main": "particles.js",
"version": "1.0.2",
"homepage": "https://github.com/VincentGarreau/particles.js", "homepage": "https://github.com/VincentGarreau/particles.js",
"authors": [ "authors": [
"Vincent Garreau <vin.garreau@gmail.com>" "Vincent Garreau <vin.garreau@gmail.com>"

View File

@ -22,19 +22,75 @@ li{list-style:none}
My CSS My CSS
========================================================================== */ ========================================================================== */
/* ---- base ---- */
html,body{ html,body{
width:100%; width:100%;
height:100%; height:100%;
background:#000; background:#111;
} }
/* remove canvas default margin */ html{
canvas{ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
display:block;
vertical-align:bottom;
} }
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{ #particles-js{
width:100%; width: 100%;
height: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> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>particles.js</title> <title>particles.js</title>
<meta name="description" content="particles.js is a lightweight JavaScript library for creating particles."> <meta name="description" content="particles.js is a lightweight JavaScript library for creating particles.">
<meta name="author" content="Vincent Garreau" /> <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"> <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"> <link rel="stylesheet" media="screen" href="css/style.css">
</head> </head>
<body> <body>
<!-- count particles -->
<div class="count-particles">
<span class="js-count-particles">--</span> particles
</div>
<!-- particles.js container -->
<div id="particles-js"></div> <div id="particles-js"></div>
<!-- scripts -->
<script src="../particles.js"></script> <script src="../particles.js"></script>
<script src="js/app.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> </body>
</html> </html>

View File

@ -1,53 +1,133 @@
/* default dom id (particles-js) */ /* -----------------------------------------------
//particlesJS(); /* How to use? : Check the GitHub README
/* ----------------------------------------------- */
/* config dom id */ /* To load a config file (particles.json) you need to host this demo (MAMP/WAMP/local)... */
//particlesJS('dom-id'); /*
particlesJS.load('particles-js', 'particles.json', function() {
console.log('particles.js loaded - callback');
});
*/
/* config dom id (optional) + config particles params */ /* Otherwise just put the config content (json): */
particlesJS('particles-js', {
particles: { particlesJS('particles-js',
color: '#fff',
shape: 'circle', // "circle", "edge" or "triangle" {
opacity: 1, "particles": {
size: 4, "number": {
size_random: true, "value": 80,
nb: 150, "density": {
line_linked: { "enable": true,
enable_auto: true, "value_area": 800
distance: 100, }
color: '#fff', },
opacity: 1, "color": {
width: 1, "value": "#ffffff"
condensed_mode: { },
enable: false, "shape": {
rotateX: 600, "type": "circle",
rotateY: 600 "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
}
} }
}, },
anim: { "interactivity": {
enable: true, "detect_on": "canvas",
speed: 1 "events": {
} "onhover": {
}, "enable": true,
interactivity: { "mode": "repulse"
enable: true, },
mouse: { "onclick": {
distance: 300 "enable": true,
}, "mode": "push"
detect_on: 'canvas', // "canvas" or "window" },
mode: 'grab', "resize": true
line_linked: { },
opacity: .5 "modes": {
}, "grab": {
events: { "distance": 400,
onclick: { "line_linked": {
enable: true, "opacity": 1
mode: 'push', // "push" or "remove" }
nb: 4 },
"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"
} }
}, }
/* Retina Display Support */
retina_detect: true );
});

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

7
particles.min.js vendored

File diff suppressed because one or more lines are too long