WEBLEB
Home
Editor
Login
Pro
English
English
Français
Español
Português
Deutsch
Italiano
हिंदी
Toast Notification
657
Luthfa
Open In Editor
Publish Your Code
Recommended
14 October 2024
Payment - Form With Notification
10 September 2024
Splashed Toast Notifications
HTML
Copy
Detect Internet Connection | CodingNepal
You're online now
Hurray! Internet is connected.
CSS
Copy
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } body { width: 100%; min-height: 100vh; background: #e6e6e6; } .connection { position: fixed; bottom: 50px; left: 50px; width: 360px; height: 70px; background: #242526; border-radius: 8px; display: flex; justify-content: center; align-items: center; transform: translateX(-100%); opacity: 0; pointer-events: none; transition: 0.5s; } .connection p { font-size: 14px; color: #fff; font-weight: 300; } .connection .refreshBtn { font-size: 16px; margin-left: 10px; text-decoration: none; color: #469aff; } .connection .wifi-off { margin-right: 20px; font-size: 26px; color: #7c7c7c; } .connection .close { margin-left: 20px; width: 25px; height: 25px; line-height: 25px; background: #474747; text-align: center; border-radius: 50%; font-size: 20px; color: #fff; cursor: pointer; } .connection .wifi { color: #029702; font-size: 26px; margin-right: 20px; } .online.active { width: 420px; transform: translateX(0%); opacity: 1; pointer-events: auto; } .offline.active { transform: translateX(0%); opacity: 1; pointer-events: auto; } @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700&display=swap'); *{ margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } body{ overflow: hidden; background: #f2f2f2; } .wrapper{ position: absolute; top: 20px; left: 20px; animation: show_toast 1s ease forwards; } @keyframes show_toast { 0%{ transform: translateX(-100%); } 40%{ transform: translateX(10%); } 80%, 100%{ transform: translateX(20px); } } .wrapper.hide{ animation: hide_toast 1s ease forwards; } @keyframes hide_toast { 0%{ transform: translateX(20px); } 40%{ transform: translateX(10%); } 80%, 100%{ opacity: 0; pointer-events: none; transform: translateX(-100%); } } .wrapper .toast{ background: #fff; padding: 20px 15px 20px 20px; border-radius: 10px; border-left: 5px solid #2ecc71; box-shadow: 1px 7px 14px -5px rgba(0,0,0,0.15); width: 430px; display: flex; align-items: center; justify-content: space-between; } .wrapper .toast.offline{ border-color: #ccc; } .toast .content{ display: flex; align-items: center; } .content .icon{ font-size: 25px; color: #fff; height: 50px; width: 50px; text-align: center; line-height: 50px; border-radius: 50%; background: #2ecc71; } .toast.offline .content .icon{ background: #ccc; } .content .details{ margin-left: 15px; } .details span{ font-size: 20px; font-weight: 500; } .details p{ color: #878787; } .toast .close-icon{ color: #878787; font-size: 23px; cursor: pointer; height: 40px; width: 40px; text-align: center; line-height: 40px; border-radius: 50%; background: #f2f2f2; transition: all 0.3s ease; } .close-icon:hover{ background: #efefef; }
JS
Copy
// Selecting all required elements const wrapper = document.querySelector(".wrapper"), toast = wrapper.querySelector(".toast"), title = toast.querySelector("span"), subTitle = toast.querySelector("p"), wifiIcon = toast.querySelector(".icon"), closeIcon = toast.querySelector(".close-icon"); window.onload = ()=>{ function ajax(){ let xhr = new XMLHttpRequest(); //creating new XML object xhr.open("GET", "https://jsonplaceholder.typicode.com/posts", true); //sending get request on this URL xhr.onload = ()=>{ //once ajax loaded //if ajax status is equal to 200 or less than 300 that mean user is getting data from that provided url //or his/her response status is 200 that means he/she is online if(xhr.status == 200 && xhr.status < 300){ toast.classList.remove("offline"); title.innerText = "You're online now"; subTitle.innerText = "Hurray! Internet is connected."; wifiIcon.innerHTML = '<i class="uil uil-wifi"></i>'; closeIcon.onclick = ()=>{ //hide toast notification on close icon click wrapper.classList.add("hide"); } setTimeout(()=>{ //hide the toast notification automatically after 5 seconds wrapper.classList.add("hide"); }, 5000); }else{ offline(); //calling offline function if ajax status is not equal to 200 or not less that 300 } } xhr.onerror = ()=>{ offline(); ////calling offline function if the passed url is not correct or returning 404 or other error } xhr.send(); //sending get request to the passed url } function offline(){ //function for offline wrapper.classList.remove("hide"); toast.classList.add("offline"); title.innerText = "You're offline now"; subTitle.innerText = "Opps! Internet is disconnected."; wifiIcon.innerHTML = '<i class="uil uil-wifi-slash"></i>'; } setInterval(()=>{ //this setInterval function call ajax frequently after 100ms ajax(); }, 100); }