JSFiddle - React, Tailwind, and code Playground
by birdie2019
HTML
<div class="container">
<button onclick="toastSuccess()">成功訂購商品</button>
<hr>
<button onclick="toastError()">訂購商品失敗</button>
<div class="toast toast-success">
訂購成功!可以查看 Email 確認訂單細節!
</div>
<div class="toast toast-error">
抱歉,訂購失敗!請稍後重新嘗試
</div>
</div>
CSS
* {
box-sizing: border-box;
}
.container {
width: 500px;
margin: 100px auto;
position: relative;
}
button {
background-color: #14375e;
border-radius: 3px;
padding: 7px;
border: 0;
letter-spacing: 1px;
color: #fff;
cursor: pointer;
}
.toast {
width: 350px;
font-size: 14px;
border-radius: 5px;
padding: 15px;
box-shadow: 0px 3px 5px rgb(252, 252, 252);
position: absolute;
right: 0;
transform: translateX(50%);
transition: transform 0.5s ease-in-out;
}
.toast.active {
transform: translateX(0%);
}
.toast-success {
background-color: rgb(243, 255, 243);
color: rgb(57, 150, 57);
top: -30%;
}
.toast-error {
background-color: rgb(255, 244, 244);
color: rgb(227, 80, 80);
bottom: -30%;
}
JavaScript
var list = document.querySelectorAll('.toast');
for (var item of list) {
item.style.opacity = '0';
}
function toastSuccess() {
var toastSuccessClass = document.querySelector('.toast-success');
toastSuccessClass.style.opacity = '1';
toastSuccessClass.classList.add('active');
setTimeout(function(){
toastSuccessClass.style.opacity = '0';
toastSuccessClass.classList.remove('active');
}, 5000);
}
function toastError() {
var toastErrorClass = document.querySelector('.toast-error');
toastErrorClass.style.opacity = '1';
toastErrorClass.classList.add('active');
setTimeout(function(){
toastErrorClass.style.opacity = '0';
toastErrorClass.classList.remove('active');
}, 5000);
}