Skip to content

Fireflies

The fireflies simulation creates floating glowing dots that softly fade in and out while drifting with organic, natural movement. Each firefly pulses independently, creating a magical nighttime atmosphere.

Examples

Basic fireflies

A gentle swarm of fireflies with default settings.

<template>
    <EffectDemo>
        <canvas ref="canvasRef"></canvas>
    </EffectDemo>
</template>

<script
    setup
    lang="ts">
    import { onMounted, onUnmounted, ref } from 'vue';
    import { createFireflies } from '@basmilius/sparkle';

    const canvasRef = ref<HTMLCanvasElement>();
    let sim: ReturnType<typeof createFireflies> | null = null;

    onMounted(() => {
        if (canvasRef.value) {
            sim = createFireflies();
            sim.mount(canvasRef.value).start();
        }
    });

    onUnmounted(() => {
        sim?.destroy();
        sim = null;
    });
</script>

Dense swarm

A larger, brighter swarm with faster pulsing.

<template>
    <EffectDemo>
        <canvas ref="canvasRef"></canvas>
    </EffectDemo>
</template>

<script
    setup
    lang="ts">
    import { onMounted, onUnmounted, ref } from 'vue';
    import { createFireflies } from '@basmilius/sparkle';

    const canvasRef = ref<HTMLCanvasElement>();
    let sim: ReturnType<typeof createFireflies> | null = null;

    onMounted(() => {
        if (canvasRef.value) {
            sim = createFireflies({
                count: 150,
                size: 8,
                glowSpeed: 1.5
            });
            sim.mount(canvasRef.value).start();
        }
    });

    onUnmounted(() => {
        sim?.destroy();
        sim = null;
    });
</script>

Configuration

All options are passed via a config object:

typescript
import { createFireflies } from '@basmilius/sparkle';

const fireflies = createFireflies({
    count: 60,
    color: '#b4ff6a',
    size: 6,
    speed: 1,
    glowSpeed: 1,
    scale: 1
});
fireflies.mount(canvas).start();

Count

Control the number of fireflies:

typescript
// Sparse, subtle
createFireflies({ count: 20 });

// Dense swarm
createFireflies({ count: 150 });

Color

Set the glow color using any CSS color string:

typescript
// Warm yellow
createFireflies({ color: '#ffcc33' });

// Cool blue
createFireflies({ color: '#66ccff' });

Glow Speed

Control how fast the fireflies pulse:

typescript
// Slow, gentle pulse
createFireflies({ glowSpeed: 0.5 });

// Fast, energetic pulse
createFireflies({ glowSpeed: 2 });

Movement Speed

typescript
// Very slow drift
createFireflies({speed: 0.5});

// Quick, lively movement
createFireflies({speed: 2});