Stylish CSS Toast Notification With Animated Progress Bar
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Stylish CSS Toast Notification With Animated Progress Bar</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap"> </head> <body> <div class="toast active"> <div class="toast-content"> <i class="fas fa-solid fa-check check"></i> <div class="message"> <span class="text text-1">Success</span> <span class="text text-2">Your changes has been saved</span> </div> </div> <i class="fa-solid fa-xmark close"></i> <div class="progress active"></div> </div> <button>Show Toast</button> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script> </body> </html>
* { margin: 0; padding: 0; box-sizing: border-box; font-family: "Poppins", sans-serif; } body { height: 100vh; display: flex; align-items: center; justify-content: center; background-color: #f4f7ff; overflow: hidden; } .toast { position: absolute; top: 25px; right: 30px; border-radius: 12px; background: #fff; padding: 20px 35px 20px 25px; box-shadow: 0 6px 20px -5px rgba(0, 0, 0, 0.1); overflow: hidden; transform: translateX(calc(100% + 30px)); transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.35); } .toast.active { transform: translateX(0%); } .toast .toast-content { display: flex; align-items: center; } .toast-content .check { display: flex; align-items: center; justify-content: center; height: 35px; min-width: 35px; background-color: #2770ff; color: #fff; font-size: 20px; border-radius: 50%; } .toast-content .message { display: flex; flex-direction: column; margin: 0 20px; } .message .text { font-size: 16px; font-weight: 400; color: #666666; } .message .text.text-1 { font-weight: 600; color: #333; } .toast .close { position: absolute; top: 10px; right: 15px; padding: 5px; cursor: pointer; opacity: 0.7; } .toast .close:hover { opacity: 1; } .toast .progress { position: absolute; bottom: 0; left: 0; height: 3px; width: 100%; } .toast .progress:before { content: ""; position: absolute; bottom: 0; right: 0; height: 100%; width: 100%; background-color: #2770ff; } .progress.active:before { animation: progress 5s linear forwards; } @keyframes progress { 100% { right: 100%; } } button { padding: 12px 20px; font-size: 20px; outline: none; border: none; background-color: #2770ff; color: #fff; border-radius: 6px; cursor: pointer; transition: 0.3s; } button:hover { background-color: #2770ff; } .toast.active~button { pointer-events: none; }
const button = document.querySelector("button"), toast = document.querySelector(".toast"); closeIcon = document.querySelector(".close"), progress = document.querySelector(".progress"); let timer1, timer2; button.addEventListener("click", () => { toast.classList.add("active"); progress.classList.add("active"); timer1 = setTimeout(() => { toast.classList.remove("active"); }, 5000); timer2 = setTimeout(() => { progress.classList.remove("active"); }, 5300); }); closeIcon.addEventListener("click", () => { toast.classList.remove("active"); setTimeout(() => { progress.classList.remove("active"); }, 300); clearTimeout(timer1); clearTimeout(timer2); });
This snippet creates a stylish and highly informative toast notification, designed purely with CSS to provide clear messages along with a visual progress bar. The animated progress bar offers intuitive feedback on the notification's duration, ensuring a user-friendly and visually appealing experience.
Key Features:
- Customizable Styling: Easily modify the appearance of the toast notification and progress bar using pure CSS to align with your website's design and branding.
- Animated Progress Bar: Features a smooth, animated progress bar that visually indicates the remaining display time of the notification.
- Clear Messaging: Allows for the concise and clear display of short messages, alerts, or confirmations.
- Pure CSS Implementation: Achieves animation and styling without the need for JavaScript for core functionality (though JS can be used for triggering).
Implementation:
- Create the HTML Structure: Set up the basic HTML structure for the toast notification, including a container for the message and a separate element for the progress bar.
- Apply CSS Styling: Use CSS to style the various elements of the toast notification (background, text, padding, border-radius) and the progress bar (width, color, animation properties).
- Implement CSS Animations: Define CSS @keyframes for the progress bar's animation to create a smooth visual countdown. You might also add animations for the toast's entry and exit.
By following these steps, you can create a fully customizable and visually engaging toast notification with an animated progress bar that effectively communicates information and enhances the user experience on your website. visitors.

Join Our Community Call-to-Action Banner Section With Tailwind CSS

Bootstrap 5 Responsive Service Pricing Table Block

Owl Carousel Responsive CSS-Only Team Section Showcase

Tailwind CSS Subscribe Container with Integrated Footer

Responsive Bootstrap 5 Detailed Features Section

Responsive CSS-Only Glassmorphism Login Form with background image

Responsive Tailwind CSS Hero Section and Adaptive Navbar

Responsive Bootstrap 5 Compact FAQ Accordion Display

Responsive CSS Only Services Section with Hover Effects

Responsive Tailwind CSS Team Members Display Showcase

Responsive Bootstrap 5 Clear Process Flow Component

Responsive Interactive Login & Register Form with CSS & JS Transitions
Building Blocks for Your Web Pages
Explore a collection of pre-written HTML,CSS and Javascript
snippets to jumpstart your web development projects.