UNPKG

spawn-confetti

Version:

๐ŸŽ‰ Lightweight JavaScript confetti effect that spawns at the mouse position on demand.

82 lines (74 loc) โ€ข 3.11 kB
# ๐ŸŽ‰ Confetti Effect ![npm](https://img.shields.io/npm/v/spawn-confetti) ![license](https://img.shields.io/badge/license-MIT-blue.svg) ![downloads](https://img.shields.io/npm/dt/spawn-confetti) 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. ![Demo](demo.gif) ## ๐Ÿš€ 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.