How to create followspot effect using HTML CSS and jQuery ? (original) (raw)
Last Updated : 12 Jul, 2025
The follow-spot effect (spotlight effect) is an effect that can be easily implemented using jQuery. The effect is quite popular for the opening or front banner design for any website.
Approach: The approach is to use circle CSS on the mouse movement effect using the mousemove() function provided by jQuery.
HTML Code: The HTML code is used to design the basic structure of the body. In this section, we will use a
html `
Split Effect`
CSS Code: The CSS property is used to set the style to the image.
CSS `
body { margin: 0; padding: 0; }
section { background: url(geeks.png); position: relative; width: 100%; height: 100vh; background-size: cover; }
.geeks { position: absolute; width: 100%; height: 100%; }
`
jQuery Code: We have used the mousemove() function to track the mouse movement and apply the effect according to cursor movement. For creating a circle, just use radial-gradient along with the X and Y points that are basically the location of the cursor and provide a radius of 30% for roundness. Don't forget to apply this CSS to the div tag.
javascript `
$(document).mousemove(function (e) { let X = e.pageX; let Y = e.pageY; $(".geeks").css("background", "radial-gradient(circle at " + X + "px " + Y + "px, transparent, #000 30%)" ); });
`
Complete Code: In his section, we will combine the above three sections of code (HTML, CSS, and jQuery) to create a follow-spot effect.
html `
<title>Split Effect</title>
<script src="" title="undefined" rel="noopener noreferrer">https://code.jquery.com/jquery-3.4.1.js">
<style>
body {
margin: 0;
padding: 0;
}
section {
background: url("https://media.geeksforgeeks.org/wp-content/cdn-uploads/Geek_logi_-low_res.png"); position: relative; width: 100%; height: 100vh; background-size: cover; }
.geeks {
position: absolute;
width: 100%;
height: 100%;
}
</style>
<script>
$(document).mousemove(function (e) {
let X = e.pageX;
let Y = e.pageY;
$(".geeks").css(
"background",
"radial-gradient(circle at " +
X +
"px " +
Y +
"px, transparent, #000 30%)"
);
});
</script>
`
Output:
