Introduction:
In today’s tutorial, we’ll dive into the world of web development and learn how to create a Fake Sales Notification using HTML, CSS, and JavaScript. This interactive feature will display random purchase notifications, mimicking real-time customer engagement. By the end of this tutorial, you’ll have a better understanding of DOM manipulation, event handling, and creating engaging user interfaces.
Things You Will Learn:
- DOM Manipulation: Discover how to manipulate the Document Object Model (DOM) to dynamically update content on a webpage without requiring a full page refresh.
- Event Handling: Learn how to handle user interactions by adding event listeners to DOM elements, allowing you to execute specific actions based on user behavior.
- Randomization: Explore techniques for generating random data, such as selecting a random name from an array or generating a random time interval.
- CSS Styling: Enhance the visual appeal of your project by applying CSS styles to create an appealing and user-friendly design.
Video Tutorial:
To complement this written tutorial, you can find a detailed video walkthrough on my YouTube channel:
Project Folder Structure:
To get started, let’s set up the project folder structure:
- index.html
- style.css
- script.js
- product images
HTML:
The HTML file contains the necessary elements for the alert:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Fake Sales Notification</title> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet" /> <!-- Stylesheet --> <link rel="stylesheet" href="style.css" /> </head> <body> <div id="product-alert"> <div class="product-info"> <img src="" alt="Product Image" id="product-image" /> <div id="product-text"></div> </div> <button id="close-btn">Close</button> </div> <!-- Script --> <script src="script.js"></script> </body> </html>
Â
CSS:
The CSS file is responsible for creating an appealing user interface:
* { margin: 0; padding: 0; font-family: "Poppins", sans-serif; } #alert-btn { cursor: pointer; } #product-alert { width: 350px; position: fixed; bottom: 20px; right: 20px; padding: 10px; border-radius: 5px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); display: none; align-items: flex-start; gap: 0.5em; } .product-info { display: flex; } .product-info img { width: 100px; height: 100px; margin-right: 10px; } .message { font-size: 16px; } .time { font-size: 14px; margin-top: 16px; color: #a0a0a0; } #close-btn { background-color: transparent; color: red; border: none; outline: none; }
Â
JS:
The JavaScript file contains the logic to handle randomly creating and displaying the alert:
const productAlert = document.getElementById("product-alert"); const closeAlertBtn = document.getElementById("close-btn"); const productText = document.getElementById("product-text"); const productImage = document.getElementById("product-image"); const names = ["John", "Alice", "Bob", "Emma", "Betty"]; const products = [ { name: "Nike Red Shoes", image: "product-image-1.jpg", }, { name: "Chanel Noir Perfume", image: "product-image-2.jpg", }, { name: "Awesome Black Shirt", image: "product-image-3.jpg", }, { name: "Ray-Ban Sunglasses", image: "product-image-4.jpg", }, { name: "Black Apple Watch", image: "product-image-5.jpg", }, ]; function getRandomItemFromArray(arr) { return arr[Math.floor(Math.random() * arr.length)]; } function getRandomTime() { return Math.floor(Math.random() * 59) + 1; } const getRandomDisplayTime = () => Math.random() * (8 - 3) + 3; const showAlert = () => { const randomName = getRandomItemFromArray(names); const randomProduct = getRandomItemFromArray(products); const { name, image } = randomProduct; productImage.src = image; productText.innerHTML = `<p class="message">${randomName} purchased ${name}</p> <p class="time">${getRandomTime()} mins ago</p>`; productAlert.style.display = "flex"; }; closeAlertBtn.addEventListener("click", () => { productAlert.style.display = "none"; setTimeout(showAlert, Math.floor(getRandomDisplayTime()) * 1000); }); setTimeout(showAlert, Math.floor(getRandomDisplayTime()) * 1000);
Â
Conclusion:
Congratulations! You’ve successfully created a dynamic product alert feature using HTML, CSS, and JavaScript. Through this tutorial, you’ve gained insights into DOM manipulation, event handling, and randomization techniques. By following the step-by-step instructions, you’ve built a foundation for creating engaging and interactive web applications.
thanks for this amazing projects