Skip to content

A customizable fluid cursor effect for Vanilla JavaScript/TypeScript applications running on the web. Enhance user experience with smooth, interactive cursor animations. Perfect for modern web designs.

Notifications You must be signed in to change notification settings

faraasat/smokey-fluid-cursor

Repository files navigation

🌊 Smokey Fluid Cursor

A beautiful, interactive fluid simulation that creates stunning visual effects following your cursor movements for your JavaScript and TypeScript application on web. Built with WebGL for high-performance real-time fluid dynamics.

npm version package size minified Badge JavaScript Style Guide

total downloads total downloads per year total downloads per week total downloads per month download-image

smokey-fluid-cursor


📦 Installation

npm i smokey-fluid-cursor

yarn add smokey-fluid-cursor

pnpm i smokey-fluid-cursor

bun add smokey-fluid-cursor

📸 Demo

Also see more details in Example:

Demo


🚀 Quick Start

Basic Usage

import { initFluid } from "smokey-fluid-cursor";

// Initialize with default settings
initFluid();

HTML Setup

<!DOCTYPE html>
<html>
  <head>
    <style>
      body {
        margin: 0;
        background: #000;
        overflow: hidden;
      }
    </style>
  </head>
  <body>
    <canvas id="smokey-fluid-canvas"></canvas>

    <script type="module">
      import { initFluid } from "https://cdn.jsdelivr.net/npm/smokey-fluid-cursor@latest/dist/index.mjs";

      window.addEventListener("DOMContentLoaded", () => {
        initFluid();
      });
    </script>
  </body>
</html>

IIFE Setup

<!DOCTYPE html>
<html>
  <head>
    <style>
      body {
        margin: 0;
        background: #000;
        overflow: hidden;
      }
    </style>
  </head>
  <body>
    <canvas id="smokey-fluid-canvas"></canvas>

    <script src="https://cdn.jsdelivr.net/npm/smokey-fluid-cursor@latest/dist/index.global.js"></script>

    <script type="module">
      window.addEventListener("DOMContentLoaded", () => {
        if (window.SmokyFluid) {
          const fluid = SmokyFluid.initFluid();
        } else {
          console.error("SmokyFluid not found!");
        }
      });
    </script>
  </body>
</html>

⚙️ Configuration

Customize the fluid simulation with these configuration options:

initFluid({
  id: "smokey-fluid-cursor", // Canvas element ID
  simResolution: 128, // Simulation resolution (higher = more detailed)
  dyeResolution: 512, // Dye/color resolution
  densityDissipation: 0.98, // How quickly colors fade (0-1)
  velocityDissipation: 0.98, // How quickly movement slows down
  pressureIteration: 10, // Pressure solver iterations
  curl: 30, // Vorticity/swirl intensity
  splatRadius: 0.25, // Size of cursor splats
  splatForce: 6000, // Force of cursor movements
  shading: true, // Enable 3D lighting effects
  colorUpdateSpeed: 0.5, // Speed of color transitions
  transparent: false, // Transparent background
});

🌟 Features

  • Real-time Fluid Dynamics: Physics-based simulation using Navier-Stokes equations
  • WebGL Accelerated: High-performance rendering for smooth 60fps
  • Interactive: Responds to mouse and touch movements
  • Customizable: Extensive configuration options
  • Mobile Support: Touch-optimized interactions
  • Auto-scaling: Adapts to screen size and pixel ratio
  • Color Cycling: Dynamic, evolving color palettes
  • 3D Lighting: Optional shading for depth perception

🎯 Use Cases

  • Website Backgrounds: Immersive animated backgrounds
  • Cursor Effects: Enhanced user interaction feedback
  • Data Visualization: Fluid-based data representations
  • Art Installations: Digital art and creative coding
  • Game Effects: Atmospheric and UI effects
  • Product Demos: Eye-catching technology showcases

🧑‍💻 Author

Built and maintained by Farasat Ali

About

A customizable fluid cursor effect for Vanilla JavaScript/TypeScript applications running on the web. Enhance user experience with smooth, interactive cursor animations. Perfect for modern web designs.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •