Introduction:
In this tutorial, we will dive into the fascinating world of canvas drawing using HTML, CSS, and JavaScript. You will learn how to create a custom neon cursor, allowing users to paint vibrant trails with their mouse movements. This project is not only a fun and engaging way to understand canvas rendering but also an excellent opportunity to enhance your skills in front-end web development.
Things You Will Learn:
- Setting up an HTML canvas element
- Utilizing the Canvas 2D context for drawing
- Managing mouse events for interactive drawing
- Creating a visually appealing trail effect
- Incorporating animation using
requestAnimationFrame
Video Tutorial:
Here is the video tutorial for this project. If you like the tutorial subscribe to my YouTube channel. I post new projects based on HTML, CSS, and Javascript on my channel regularly.
Project Folder Structure:
Now before we move on to actual coding we create a project folder structure. We name the project folder as – ”Custom Neon Cursor With Javascript”. Within this folder, we have 3 files. These files are:
- index.html
- style.css
- script.js
HTML:
We begin with the HTML code. Copy the code below and paste it into your HTML document.
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Neon Trail Cursor</title>
<!-- Stylesheet -->
<link rel="stylesheet" href="style.css" />
</head>
<body>
<canvas id="canvas"></canvas>
<!-- Script -->
<script src="script.js"></script>
</body>
</html>
Â
CSS:
Next, we style our code using CSS. For this copy, the code provided to you below and paste it into your stylesheet.
body {
margin: 0;
overflow: hidden;
cursor: none;
}
canvas {
display: block;
}
Â
JS:
Finally, we add functionality using Javascript. For this once again copy the code below and paste it into your script file.
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
const trailLength = 20;
const trailColor = "0,255,255"; //RGB values for cyan color
const trail = [];
function draw() {
ctx.fillStyle = "rgba(0,0,0,0.1)";
ctx.fillRect(0, 0, canvas.width, canvas.height);
for (let i = 0; i < trail.length; i++) {
const alpha = 1;
ctx.save();
ctx.beginPath();
ctx.arc(trail[i].x, trail[i].y, 10, 0, Math.PI * 2);
ctx.fillStyle = `rgba(${trailColor},${alpha})`;
ctx.closePath();
ctx.fill();
ctx.restore();
}
window.requestAnimationFrame(draw);
}
function addTrailPoint(x, y) {
trail.push({ x, y });
if (trail.length > 1) {
trail.shift();
}
}
let mouseX = 0,
mouseY = 0;
const startDrawing = (e) => {
const newX = e.clientX;
const newY = e.clientY;
addTrailPoint(newX, newY);
mouseX = newX;
mouseY = newY;
};
canvas.addEventListener("mousemove", startDrawing);
window.onload = () => {
window.requestAnimationFrame(draw);
};
Â
Conclusion:
Congratulations! You’ve successfully created an interactive trail drawing canvas using HTML, CSS, and JavaScript. This project not only introduces you to the fundamentals of canvas rendering but also provides a solid foundation for more advanced web development projects. Experiment with different colors, sizes, and effects to customize your canvas further. Keep exploring and enhancing your front-end skills!


This tutorial is amazing. I will definitely try this type of stuff on my client site.