Forget the boring black cursor! We’ll design a glowing masterpiece that trails your every move, adding a touch of personality and flair to your web experience.
I would recommend you don’t just copy and paste the code, just look at the code and type by understanding it.
Demo
HTML Code
Starter Template
<!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- CSS --> <link rel="stylesheet" href="style.css"> <title>Linear Style Cursor Glow Effect using HTML CSS and JavaScript - Coding Torque</title> </head> <body> <!-- Further code here --> <script src="script.js"></script> </body> </html>
Paste the below code in your <body>
tag.
<div class="features"> <div class="feature"> <a href="#" class="feature-content"> <strong>Some feature</strong> <span>Description of the awesome feature</span> </a> </div> <div class="feature"> <a href="#" class="feature-content"> <strong>Some feature</strong> <span>Description of the awesome feature</span> </a> </div> <div class="feature"> <a href="#" class="feature-content"> <strong>Some feature</strong> <span>Description of the awesome feature</span> </a> </div> <div class="feature"> <a href="#" class="feature-content"> <strong>Some feature</strong> <span>Description of the awesome feature</span> </a> </div> <div class="feature"> <a href="#" class="feature-content"> <strong>Some feature</strong> <span>Description of the awesome feature</span> </a> </div> <div class="feature"> <a href="#" class="feature-content"> <strong>Some feature</strong> <span>Description of the awesome feature</span> </a> </div> </div>
CSS(SCSS) Code
Create a file style.css and paste the code below.
html, body { width: 100%; height: 100%; margin: 0; padding: 0; background: #060606; } body { display: flex; justify-content: center; align-items: center; } *, *:before, *:after { box-sizing: border-box; position: relative; } .features { width: 75vw; height: 50vh; display: grid; grid-column-gap: 0.3rem; grid-row-gap: 0.3rem; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); } .feature { --x-px: calc(var(--x) * 1px); --y-px: calc(var(--y) * 1px); --border: 2px; background: rgba(255, 255, 255, 0.125); border-radius: 0.5rem; overflow: hidden; &:before, &:after { content: ""; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; inset: 0px; border-radius: inherit; background: radial-gradient( 800px circle at var(--x-px) var(--y-px), rgba(255, 255, 255, 0.3), transparent 40% ); } &:before { z-index: 1; } &:after { opacity: 0; z-index: 2; transition: opacity 0.4s ease; } &:hover:after { opacity: 1; } } .feature-content { background: rgb(19, 19, 21); border-radius: inherit; color: white; text-decoration: none; z-index: 1; position: absolute; inset: var(--border); display: grid; grid-template-rows: 1fr 1fr; grid-row-gap: 0.5rem; padding: 0 1rem 0 2rem; > strong { align-self: self-end; font-size: 125%; } > span { opacity: 0.7; } }
JavaScript Code
Create a file script.js and paste the code below.
console.clear(); const featuresEl = document.querySelector(".features"); const featureEls = document.querySelectorAll(".feature"); featuresEl.addEventListener("pointermove", (ev) => { featureEls.forEach((featureEl) => { // Not optimized yet, I know const rect = featureEl.getBoundingClientRect(); featureEl.style.setProperty("--x", ev.clientX - rect.left); featureEl.style.setProperty("--y", ev.clientY - rect.top); }); });
Final Output
Written by: Piyush Patil
Code Credits: https://codepen.io/davidkpiano/pen/gOoNZNe
If you found any mistakes or have any doubts please feel free to Contact Us
Hope you find this post helpful💖