Text Mask Cursor Moving Animation using HTML CSS & Jquery
January 06, 2023
Here I am going to making a Text mask effect cursor moving animation using HTML, CSS and Jquery. I am using the simple Jquery code without any plugins. I have included some examples in this.
HTML Code
Copy
<!doctype html> <html lang="en"> <head> <title>Masking Animation</title> <!--- Boorstrap5 ---> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> <!--- Style ---> <link href="style.css" rel="stylesheet"> </head> <body> <!--- Example1 ---> <section class="d-flex align-items-center justify-content-center"> <div> <h3 class="mb-5">Example #1</h3> <h1 class="mask-title example1"> Masking <br/>Animation </h1> <h3 class="mt-5 mb-0">HTML, CSS & Jquery</h3> </div> </section> <!--- Example2 ---> <section class="d-flex align-items-center justify-content-center"> <div> <h3 class="mb-5">Example #2</h3> <h1 class="mask-title example2"> Masking <br/>Animation </h1> <h3 class="mt-5 mb-0">HTML, CSS & Jquery</h3> </div> </section> <!--- Example3 ---> <section class="bg-img d-flex align-items-center justify-content-center"> <div> <h3 class="mb-5">Example #3</h3> <h1 class="mask-title example3"> Masking <br/>Animation </h1> <h3 class="mt-5 mb-0">HTML, CSS & Jquery</h3> </div> </section> <!--- Example4 ---> <section class="bg-color d-flex align-items-center justify-content-center"> <div> <h3 class="mb-5">Example #4</h3> <h1 class="mask-title example4"> Masking <br/>Animation </h1> <h3 class="mt-5 mb-0">HTML, CSS & Jquery</h3> </div> </section> <!--- Example5 ---> <section class="d-flex align-items-center justify-content-center"> <div> <h3 class="mb-5">Example #5</h3> <h1 class="mask-title example5"> Masking <br/>Animation </h1> <h3 class="mt-5 mb-0">HTML, CSS & Jquery</h3> </div> </section> <!--- JS ---> <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> <script src="main.js"></script> </body> </html>
CSS
Create style.css and put the below code.
Copy
html, body { height: 100% } body { text-align: center; font-family: "Montserrat", sans-serif; } h1 { font-size: 170px; line-height: 150px; font-weight: 700; } h3 { font-size: 40px; font-weight: 700; } section { height: 100% } .bg-img { background-image: url(https://images.pexels.com/photos/1287075/pexels-photo-1287075.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1); background-size: cover; background-position: bottom center; } .bg-img h3 { color: #fff; } .bg-color { background: #db2a2a; } .bg-color h3 { color: #fff; } /*---Masking style----*/ .mask-title-outer { position: relative; overflow: hidden; cursor: crosshair; display: inline-block; } .mask-title { margin-bottom: 0; text-transform: uppercase; padding: 0 6px; } .clone-outer { position: absolute; top: 0; left: 0; width: 230px; height: 230px; border-radius: 50%; margin-top: -115px; margin-left: -115px; overflow: hidden; transition: all 0.3s ease-out 0s; } .clone-title { position: absolute; top: 0; left: 0; margin-top: 115px; margin-left: 115px; transition: all 0.3s ease-out 0s; } .mask-title.example1:not(.clone-title) { -webkit-text-fill-color: transparent; -webkit-text-stroke-color: #212529; -webkit-text-stroke-width: 2px; } .mask-title.example1.clone-title { color: #212529; } .mask-title.example2:not(.clone-title) { color: #ccc; } .mask-title.example2.clone-title { color: #212529; } .mask-title.example3:not(.clone-title) { -webkit-text-fill-color: transparent; -webkit-text-stroke-color: #fff; -webkit-text-stroke-width: 3px; opacity: 0.3; } .mask-title.example3.clone-title { -webkit-text-fill-color: transparent; -webkit-text-stroke-color: #fff; -webkit-text-stroke-width: 3px; } .mask-title.example4:not(.clone-title) { color: transparent; } .mask-title.example4.clone-title { color: #fff; } .mask-title.example5:not(.clone-title) { color: transparent; } .mask-title.example5.clone-title { background: url(https://images.pexels.com/photos/593655/pexels-photo-593655.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1) no-repeat; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-size: cover; }
Jquery
Create main.js and put the below code.
Copy
$(document).ready(function () { $(function () { $('.mask-title').wrap('<div class="mask-title-outer"></div>'); $('.mask-title-outer').each(function () { var textMask = $(this).find('.mask-title'); $(textMask).clone().appendTo(this).addClass('clone-title').wrap('<div class="clone-outer"></div>'); var cloneOuter = $(this).find('.clone-outer'); var cloneText = $(this).find('.clone-title'); $(this).mousemove(function (e) { var x = e.offsetX; var y = e.offsetY; $(cloneText).css({ left: -x, top: -y }); $(cloneOuter).css({ left: x, top: y }); }); }); }); });