spawn-confetti
Version:
๐ Lightweight JavaScript confetti effect that spawns at the mouse position on demand.
82 lines (74 loc) โข 3.11 kB
Markdown
# ๐ Confetti Effect
  
A lightweight and highly configurable JavaScript library that spawns confetti on demandโperfect for adding celebration effects to buttons, clicks, or custom triggers on your website.

## ๐ Installation:
### Option 1: via npm
```bash
npm install spawn-confetti
```
### Option 2: Vanilla JS
1. Download `confetti.js` and add it to your project folder
2. Include it in your HTML as a module:
```html
<script src="path/to/confetti.js" type="module"></script>
```
## ๐ฎ Usage and Configuration
### Function Arguments:
The `spawnConfetti()` function has the following arguments:
- **`amount`***`(number)`* โ Number of confetti particles to spawn.
*Default:* 30
- **`x, y`***`(number | string)`* โ Spawn coordinates.<br>
*Default:* mouse coordinates<br>
*Accepted string values*:
- `mouse` โ spawn at mouse coordinate
- `center` โ spawn at center coordinate of page
- `max` โ spawn at max coordinate of page
- **`velXRange, velYRange`***`(array)`* โ Initial velocity range.<br>
*Default:* [-5, 5], [-8, 0]
- **`angVelXRange, angVelZRange`***`(array)`* โ Constant rotational velocity range.<br>
*Default:* [0, 0], [6, 12]
- **`lifetime`***`(number)`* โ Lifetime of particles in milliseconds.<br>
*Default:* 2000
Example:
```js
// Spawn 30 confetti particles at the current mouse position
spawnConfetti();
// Custom configuration
spawnConfetti({
amount: 75,
x: 'center',
y: 'max',
velXRange: [-20, 20],
velYRange: [-10, -3],
angVelXRange: [1, 0],
angVelZRange: [5, 15],
lifetime: 500
});
```
### Global Configuration:
There are a few global configurations that you can modify:
- **`acceleration`***`(vector)`* โ Controls gravity direction.<br>
*Default:* (0, 0.25)
โ *To edit values, assign like*: `acceleration.x = ...`, `acceleration.y = ...`
- **`maxVel`***`(vector)`* โ Sets maximum velocity.<br>
*Default*: (1.5, 10)
โ *To edit values, assign like*: `maxVel.x = ...`, `maxVel.y = ...`
- **`drag`***`(vector)`* โ Affects air resistance. Lower values = more drag.<br>
*Default*: (0.98, 1), must be โค 1
โ *To edit values, assign like*: `drag.x = ...`, `drag.y = ...`
- **`colors`***`(array)`* โ List of colors to randomly assign to particles.<br>
*Default*: #f44a4a, #fb8f23, #fee440, #7aff60, #00f5d4, #00bbf9, #9b5de5, #f15bb5
- **`shapes`***`(array of svg strings)`* โ Shapes for particles to randomly select from.<br>
*Default*:
```html
<rect x="5" y="0" width="6" height="16"/>,
<path width="16" height="16" d="M0,12 Q4,4 8,12 Q12,20 16,12" stroke-width="5" fill="none"/>,
<circle cx="9" cy="9" r="5.5"/>,
<polygon points="9,2.072 17,15.928 1,15.928"/>
```
> โ **Note:** When adding new custom SVG shapes, ensure that any `<path>` elements include `fill="none"` to render correctly.
<br>
**License:** MIT
<br>
**Contributing:** Contributions welcome! Please feel free to submit a Pull Request.