Close Menu

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    How to create Animated Social Media Card Hover using HTML CSS and JS

    20 October 2025

    How to create Animated LogOut Button using HTML CSS and JS

    18 October 2025

    How to create Animated Firework Diwali using HTML CSS and JS

    16 October 2025
    Facebook X (Twitter) Instagram YouTube Telegram Threads
    Coding StellaCoding Stella
    • Home
    • Blog
    • HTML & CSS
      • Login Form
    • JavaScript
    • Hire us!
    Coding StellaCoding Stella
    Home - HTML & CSS - How to create Cat Loading Animation using HTML and CSS
    HTML & CSS

    How to create Cat Loading Animation using HTML and CSS

    Coding StellaBy Coding Stella23 July 2025No Comments7 Mins Read
    Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Email WhatsApp Copy Link

    Let’s create a Cat Loading Animation using HTML and CSS! 🐱⏳
    This fun and eye-catching project adds personality to your website’s loading screen with a cute animated cat that loops smoothly.

    We’ll use:

    • HTML to structure the cat and loader elements.
    • CSS to animate the cat’s movement, blinking eyes, wagging tail, or bouncing effect.

    Whether you’re learning or just having fun, this project is a playful way to understand animation timing, keyframes, and creative CSS design.

    HTML :

    This HTML code creates the structure for a “Longcat Spinner” animation. It includes 30 <div class="cat__segment"> elements inside a main container <div class="cat">. These segments will be animated and styled using external CSS (linked via style.css) to appear like parts of a cat’s body spinning in a circle. The first and last segments are usually styled to look like the cat’s face and tail, while the rest form its body. The result is a playful, cat-themed loading spinner animation.

    <!DOCTYPE html>
    <html lang="en" >
    <head>
      <meta charset="UTF-8">
      <title>Longcat Spinner | @coding.stella</title>
      <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"><link rel="stylesheet" href="./style.css">
    </head>
    <body>
    
    <div class="cat">
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
      <div class="cat__segment"></div>
    </div>
      
    </body>
    </html>
    

    CSS :

    This CSS code creates an animated “cat loading” spinner using multiple .cat__segment elements arranged in a circular pattern. Each segment is styled as a small shape placed around a center point using transform: rotate(...). A keyframe animation (loop) rotates the segments around the center, and delays are staggered to create a smooth spinning illusion. The first and last segments are styled differently to resemble a cat’s face and tail using layered radial-gradient backgrounds. The animation is responsive and centered using Flexbox.

    * {
      border: 0;
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }
    
    body {
      background: #2c4763;
      display: flex;
      font-size: calc(16px + (20 - 16) * (100vw - 320px) / (1280 - 320));
      height: 100vh;
      line-height: 1.5;
    }
    
    .cat {
      margin: auto;
      position: relative;
      width: 16em;
      height: 16em;
    }
    .cat__segment {
      position: absolute;
      top: 50%;
      left: 50%;
      width: 3em;
      height: 2em;
      transform: translate(-50%, -50%);
    }
    .cat__segment:before {
      animation: loop 2s cubic-bezier(0.6, 0, 0.4, 1) infinite running;
      background: linear-gradient(90deg, white 20%, #e6e6e6 20% 80%, white 80%);
      border-radius: 0.25em;
      content: "";
      display: block;
      will-change: transform;
      width: 100%;
      height: 100%;
    }
    .cat__segment:first-of-type {
      width: 4em;
      height: 4em;
      z-index: 1;
    }
    .cat__segment:first-of-type:before {
      background: radial-gradient(0.25em 0.25em at 1.25em 1.6em, white 48%, rgba(255, 255, 255, 0) 50%), radial-gradient(0.75em 0.75em at 1.25em 1.75em, #1a1a1a 48%, rgba(26, 26, 26, 0) 50%), radial-gradient(0.25em 0.25em at 2.75em 1.6em, white 48%, rgba(255, 255, 255, 0) 50%), radial-gradient(0.75em 0.75em at 2.75em 1.75em, #1a1a1a 48%, rgba(26, 26, 26, 0) 50%), radial-gradient(0.9em 0.8em at 1.5em 2.65em, white 48%, rgba(255, 255, 255, 0) 50%), radial-gradient(0.9em 0.8em at 2.5em 2.65em, white 48%, rgba(255, 255, 255, 0) 50%), radial-gradient(1em 0.8em at 1.6em 2.75em, #cccccc 48%, rgba(204, 204, 204, 0) 50%), radial-gradient(1em 0.8em at 2.4em 2.75em, #cccccc 48%, rgba(204, 204, 204, 0) 50%), radial-gradient(0.75em 0.75em at 50% 2.5em, #e69999 48%, rgba(230, 153, 153, 0) 50%), radial-gradient(4em 3em at 50% 2em, white 48%, rgba(255, 255, 255, 0) 50%), radial-gradient(4em 3em at 50% 2.2em, #cccccc 48%, rgba(204, 204, 204, 0) 50%), radial-gradient(1em 3em at 0.75em 1.5em, #e69999 39%, white 40% 49%, rgba(255, 255, 255, 0) 50%), radial-gradient(1em 3em at 3.25em 1.5em, #e69999 39%, white 40% 49%, rgba(255, 255, 255, 0) 50%), radial-gradient(1em 2em at 0.5em 2.8em, white 48%, rgba(255, 255, 255, 0) 50%), radial-gradient(1em 2em at 0.5em 3em, #cccccc 48%, rgba(204, 204, 204, 0) 50%), radial-gradient(1em 2em at 3.5em 2.8em, white 48%, rgba(255, 255, 255, 0) 50%), radial-gradient(1em 2em at 3.5em 3em, #cccccc 48%, rgba(204, 204, 204, 0) 50%);
      background-repeat: no-repeat;
    }
    .cat__segment:last-of-type {
      width: 3em;
      height: 4em;
    }
    .cat__segment:last-of-type:before {
      background: linear-gradient(90deg, white 20%, #e6e6e6 20% 80%, white 80%) 0 1.5em/3em 0.5em, radial-gradient(3em 2em at top center, #e6e6e6 30%, white 31% 48%, rgba(255, 255, 255, 0) 50%) 0 2em/3em 2em, radial-gradient(1em 4em at 0.5em 0, white 48%, rgba(255, 255, 255, 0) 50%) 0 2em/3em 2em, radial-gradient(1em 4em at 2.5em 0, white 48%, rgba(255, 255, 255, 0) 50%) 0 2em/3em 2em;
      background-repeat: no-repeat;
    }
    .cat__segment:nth-of-type(1) {
      transform: translate(-50%, -50%) rotate(-20deg);
    }
    .cat__segment:nth-of-type(1):before {
      animation-delay: 0s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(2) {
      transform: translate(-50%, -50%) rotate(-18.6666666667deg);
    }
    .cat__segment:nth-of-type(2):before {
      animation-delay: 0.02s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(3) {
      transform: translate(-50%, -50%) rotate(-17.3333333333deg);
    }
    .cat__segment:nth-of-type(3):before {
      animation-delay: 0.04s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(4) {
      transform: translate(-50%, -50%) rotate(-16deg);
    }
    .cat__segment:nth-of-type(4):before {
      animation-delay: 0.06s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(5) {
      transform: translate(-50%, -50%) rotate(-14.6666666667deg);
    }
    .cat__segment:nth-of-type(5):before {
      animation-delay: 0.08s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(6) {
      transform: translate(-50%, -50%) rotate(-13.3333333333deg);
    }
    .cat__segment:nth-of-type(6):before {
      animation-delay: 0.1s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(7) {
      transform: translate(-50%, -50%) rotate(-12deg);
    }
    .cat__segment:nth-of-type(7):before {
      animation-delay: 0.12s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(8) {
      transform: translate(-50%, -50%) rotate(-10.6666666667deg);
    }
    .cat__segment:nth-of-type(8):before {
      animation-delay: 0.14s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(9) {
      transform: translate(-50%, -50%) rotate(-9.3333333333deg);
    }
    .cat__segment:nth-of-type(9):before {
      animation-delay: 0.16s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(10) {
      transform: translate(-50%, -50%) rotate(-8deg);
    }
    .cat__segment:nth-of-type(10):before {
      animation-delay: 0.18s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(11) {
      transform: translate(-50%, -50%) rotate(-6.6666666667deg);
    }
    .cat__segment:nth-of-type(11):before {
      animation-delay: 0.2s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(12) {
      transform: translate(-50%, -50%) rotate(-5.3333333333deg);
    }
    .cat__segment:nth-of-type(12):before {
      animation-delay: 0.22s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(13) {
      transform: translate(-50%, -50%) rotate(-4deg);
    }
    .cat__segment:nth-of-type(13):before {
      animation-delay: 0.24s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(14) {
      transform: translate(-50%, -50%) rotate(-2.6666666667deg);
    }
    .cat__segment:nth-of-type(14):before {
      animation-delay: 0.26s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(15) {
      transform: translate(-50%, -50%) rotate(-1.3333333333deg);
    }
    .cat__segment:nth-of-type(15):before {
      animation-delay: 0.28s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(16) {
      transform: translate(-50%, -50%) rotate(0deg);
    }
    .cat__segment:nth-of-type(16):before {
      animation-delay: 0.3s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(17) {
      transform: translate(-50%, -50%) rotate(1.3333333333deg);
    }
    .cat__segment:nth-of-type(17):before {
      animation-delay: 0.32s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(18) {
      transform: translate(-50%, -50%) rotate(2.6666666667deg);
    }
    .cat__segment:nth-of-type(18):before {
      animation-delay: 0.34s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(19) {
      transform: translate(-50%, -50%) rotate(4deg);
    }
    .cat__segment:nth-of-type(19):before {
      animation-delay: 0.36s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(20) {
      transform: translate(-50%, -50%) rotate(5.3333333333deg);
    }
    .cat__segment:nth-of-type(20):before {
      animation-delay: 0.38s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(21) {
      transform: translate(-50%, -50%) rotate(6.6666666667deg);
    }
    .cat__segment:nth-of-type(21):before {
      animation-delay: 0.4s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(22) {
      transform: translate(-50%, -50%) rotate(8deg);
    }
    .cat__segment:nth-of-type(22):before {
      animation-delay: 0.42s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(23) {
      transform: translate(-50%, -50%) rotate(9.3333333333deg);
    }
    .cat__segment:nth-of-type(23):before {
      animation-delay: 0.44s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(24) {
      transform: translate(-50%, -50%) rotate(10.6666666667deg);
    }
    .cat__segment:nth-of-type(24):before {
      animation-delay: 0.46s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(25) {
      transform: translate(-50%, -50%) rotate(12deg);
    }
    .cat__segment:nth-of-type(25):before {
      animation-delay: 0.48s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(26) {
      transform: translate(-50%, -50%) rotate(13.3333333333deg);
    }
    .cat__segment:nth-of-type(26):before {
      animation-delay: 0.5s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(27) {
      transform: translate(-50%, -50%) rotate(14.6666666667deg);
    }
    .cat__segment:nth-of-type(27):before {
      animation-delay: 0.52s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(28) {
      transform: translate(-50%, -50%) rotate(16deg);
    }
    .cat__segment:nth-of-type(28):before {
      animation-delay: 0.54s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(29) {
      transform: translate(-50%, -50%) rotate(17.3333333333deg);
    }
    .cat__segment:nth-of-type(29):before {
      animation-delay: 0.56s;
      transform: translateX(6em);
    }
    .cat__segment:nth-of-type(30) {
      transform: translate(-50%, -50%) rotate(18.6666666667deg);
    }
    .cat__segment:nth-of-type(30):before {
      animation-delay: 0.58s;
      transform: translateX(6em);
    }
    
    @keyframes loop {
      from {
        transform: rotate(0) translateX(6em);
      }
      to {
        transform: rotate(-1turn) translateX(6em);
      }
    }0

    Creating a Cat Loading Animation with HTML and CSS is a fun and beginner-friendly way to explore creative CSS animations while adding charm to your projects. 🐾💻

    If your project has problems, don’t worry. Just click to download the source code and face your coding challenges with excitement. Have fun coding!

    Animation cat loader
    Share. Copy Link Twitter Facebook LinkedIn Email WhatsApp
    Previous ArticleHow to create Animated Fanta Website using HTML CSS and JS
    Next Article How to create Reptile Interactive Cursor using HTML and JS
    Coding Stella
    • Website

    Related Posts

    JavaScript

    How to create Animated Social Media Card Hover using HTML CSS and JS

    20 October 2025
    JavaScript

    How to create Animated LogOut Button using HTML CSS and JS

    18 October 2025
    JavaScript

    How to create Animated Firework Diwali using HTML CSS and JS

    16 October 2025
    Add A Comment
    Leave A Reply Cancel Reply

    Trending Post

    Master Frontend in 100 Days Ebook

    2 March 202429K Views

    How to make Modern Login Form using HTML & CSS | Glassmorphism

    11 January 202426K Views

    How to make I love you Animation in HTML CSS & JavaScript

    14 February 202421K Views

    How to make Valentine’s Day Card using HTML & CSS

    13 February 202414K Views
    Follow Us
    • Instagram
    • Facebook
    • YouTube
    • Twitter
    ads
    Featured Post

    How to make Glassy Profile Card using HTML & TAILWIND

    28 June 2024

    How to make Slide-out Navigation with GSAP 3 using HTML CSS & JavaScript

    27 September 2024

    What is HTML? Understanding the Basics of Hypertext Markup Language

    31 January 2024

    Next Level Login & Registration Form using HTML & CSS

    11 January 2024
    Latest Post

    How to create Animated Social Media Card Hover using HTML CSS and JS

    20 October 2025

    How to create Animated LogOut Button using HTML CSS and JS

    18 October 2025

    How to create Animated Firework Diwali using HTML CSS and JS

    16 October 2025

    How to create Escape Road Game using HTML CSS and JS

    14 October 2025
    Facebook X (Twitter) Instagram YouTube
    • About Us
    • Privacy Policy
    • Return and Refund Policy
    • Terms and Conditions
    • Contact Us
    • Buy me a coffee
    © 2025 Coding Stella. Made with 💙 by @coding.stella

    Type above and press Enter to search. Press Esc to cancel.

    Ad Blocker Enabled!
    Ad Blocker Enabled!
    Looks like you're using an ad blocker. We rely on advertising to help fund our site.
    Okay! I understood