JSFiddle - React, Tailwind, and code Playground
HTML
<div class="alert alert-primary">
歡迎您點擊「抖內」按鈕,以實際行動支持我們。
<button class="btn-close">×</button>
</div>
<hr>
<div class="alert alert-success">
您已成功下訂單!以下為您的訂單詳細資訊。
<button class="btn-close">×</button>
</div>
<hr>
<div class="alert alert-danger">
抱歉,系統發生錯誤,請稍後重新嘗試。
<button class="btn-close">×</button>
</div>
<hr>
<div class="alert alert-warning">
請注意,以下內容包含「劇透」爆雷資訊。
<button class="btn-close">×</button>
</div>
SCSS
$primary-color: #e6effa;
$primary-border-color: #bcd4ee;
$success-color: #eaf7ee;
$success-border-color: #c9e4d0;
$danger-color: #fcede9;
$danger-border-color: #f2ded9;
$warning-color: #fef7ea;
$warning-border-color: #fde8c8;
* {
box-sizing: border-box;
}
.alert {
display: flex;
align-items: center;
justify-content: space-between;
width: 500px;
margin: 0 auto;
height: 2.5rem;
border-radius: 8px;
padding: 0 10px;
font-size: 18px;
&-primary {
background-color: $primary-color;
border: 2px solid $primary-border-color;
}
&-success {
background-color: $success-color;
border: 2px solid $success-border-color;
}
&-danger {
background-color: $danger-color;
border: 2px solid $danger-border-color;
}
&-warning {
background-color: $warning-color;
border: 2px solid $warning-border-color;
}
.btn-close {
background-color: transparent;
border: none;
cursor: pointer;
font-size: 24px;
border-radius: 8px;
&:hover {
background-color: rgba(255, 255, 255, 0.7);
}
}
}
JavaScript
const closeButtons = document.querySelectorAll('.btn-close');
function removeAlert() {
event.target.closest('.alert').remove();
}
for(let closeButton of closeButtons) {
closeButton.onclick = removeAlert;
}