Want to add an engaging, interactive effect to your website? Learn how to create an Interactive Div That Follows Your Mouse Cursor. A div that follows your mouse cursor can be a fun and visually appealing feature to include. It’s a great way to learn how to work with JavaScript events, particularly mousemove and touchmove, while mastering CSS positioning.
In this tutorial, we’ll create a circular div that smoothly follows the mouse pointer as it moves across the screen. The feature is touch-friendly too, so it works seamlessly on mobile devices. Watch similar tutorial here.
What You Will Learn:
- How to use the mousemoveandtouchmoveevents in JavaScript.
- Detecting whether a device is touch-enabled.
- Dynamically updating the position of an element using CSS style.
- Using CSS transitions for smooth animations.
Youtube Video:
To make this project even easier, I’ve created a video tutorial where I guide you step-by-step through building this interactive feature. In the video, I’ll explain:
- 
- Writing the HTML, CSS, and JavaScript code.
- Debugging and testing on both desktop and mobile devices.
- Enhancing the effect with additional features like animations.
 
HTML
The HTML structure is very simple, consisting of a single div.
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Div Follows Mouse Cursor</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div id="my-div"></div>
    <script src="script.js"></script>
  </body>
</html>
CSS
The CSS styles the div to look like a smooth circle that follows the cursor.
body {
  padding: 0;
  margin: 0;
  overflow: hidden;
}
#my-div {
  width: 6em;
  height: 6em;
  background-color: #34a0fb;
  position: absolute;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  transition: 0.1s ease-out;
}
- The position: absolute;ensures the div can move freely within the document.
- transform: translate(-50%, -50%)centers the div around the cursor.
- 
- transition: 0.1s ease-out;adds a smooth animation effect when the div follows the mouse
 - JavaScript- The JavaScript handles the movement of the div, responding to both mouse and touch inputs. - let myDiv = document.getElementById("my-div"); function istouchDevice() { try { document.createEvent("TouchEvent"); return true; } catch (e) { return false; } } const move = (e) => { try { var x = !istouchDevice() ? e.pageX : e.touches[0].pageX; var y = !istouchDevice() ? e.pageY : e.touches[0].pageY; } catch (e) {} myDiv.style.left = x - 50 + "px"; myDiv.style.top = y - 50 + "px"; }; document.addEventListener("mousemove", (e) => { move(e); }); document.addEventListener("touchmove", (e) => { move(e); });- How It Works- Detecting Mouse or Touch Devices
- The istouchDevicefunction determines whether the device supports touch events. If it does, the touch coordinates are used.
 
- The 
- Tracking Movement
- mousemovecaptures the cursor’s position on non-touch devices.
- touchmovecaptures touch coordinates for mobile devices.
- The movefunction calculates the new position of the div and updates itsleftandtopstyles dynamically.
 
- Centering the Div
- transform: translate(-50%, -50%)ensures that the div’s center aligns with the cursor or touch point.
 
- Smooth Animations
- The CSS transitionproperty creates a smooth trailing effect, making the movement visually appealing.
 
- The CSS 
 
 - Live Demo Ideas- Here are some creative ideas to extend this functionality: - Custom Cursor: Replace the default browser cursor with the moving div.
- Dynamic Colors: Change the background color of the div based on its position.
- Add Text or Icons: Display text or an icon inside the div to make it more interactive.
 
- Detecting Mouse or Touch Devices
 Conclusion This simple project is an excellent way to practice JavaScript and CSS while adding a dynamic, interactive element to your web pages. Whether you use it as a standalone feature or as part of a larger project, it’s sure to grab your audience’s attention. Start coding today, and don’t forget to check out the video tutorial for detailed guidance! 


