top of page

Wix Studio Tips and Tricks

Public·1 member

Wix Studio Custom Cursor - Particle Trail [Code]

<canvas id="inkCanvas"></canvas>


<style>

#inkCanvas {

position: fixed;

top: 0;

left: 0;

width: 100%;

height: 100%;

pointer-events: none;

z-index: 1000;

}

</style>


<script>

const canvas = document.getElementById('inkCanvas');

const ctx = canvas.getContext('2d');


let particles = [];


canvas.width = window.innerWidth;

canvas.height = window.innerHeight;


window.addEventListener('resize', () => {

canvas.width = window.innerWidth;

canvas.height = window.innerHeight;

});


document.addEventListener('mousemove', (e) => {

createInkParticles(e.pageX, e.pageY);

});


function createInkParticles(x, y) {

// Change the number of particles created per mouse move event by adjusting the loop limit

for (let i = 0; i < 7; i++) {

particles.push(new Particle(x, y));

}

}


class Particle {

constructor(x, y) {

this.x = x;

this.y = y;


// Change the initial size of the particles by adjusting the multiplier and addition

this.size = Math.random() * 5 + 1;


// Adjust the speed of the particles by changing the multiplier and subtraction values

this.speedX = Math.random() * 2 - 1;

this.speedY = Math.random() * 2 - 1;


// Modify the lifespan of particles by changing the random range

this.life = Math.random() * 100 + 50;


// Change the color of particles by editing the HSL values

this.color = `hsl(${Math.random() * 360}, 100%, 50%)`;

}


update() {

// Adjust particle movement speed by modifying the speedX and speedY values

this.x += this.speedX;

this.y += this.speedY;


// Decrease particle lifespan per frame

this.life--;


// Adjust the rate at which the particles shrink by changing the multiplier

this.size *= 0.95;

}


draw() {

ctx.fillStyle = this.color;

ctx.beginPath();


// You can change the shape of the particles by replacing ctx.arc with another drawing method

ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);

ctx.fill();

}

}


function handleParticles() {

for (let i = 0; i < particles.length; i++) {

particles[i].update();

particles[i].draw();


// Remove particles when their lifespan ends

if (particles[i].life <= 0) {

particles.splice(i, 1);

i--;

}

}

}


function animate() {

// Clear the canvas for the next frame

ctx.clearRect(0, 0, canvas.width, canvas.height);


// Change the composite operation for different blending effects

ctx.globalCompositeOperation = 'lighter';


handleParticles();


// Recursively call animate() to create an animation loop

requestAnimationFrame(animate);

}


animate();

</script>

122 Views

About

Share your cool Wix Studio Tips and Tricks

bottom of page