JSFiddle - React, Tailwind, and code Playground
by tsaii
HTML
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<div id='faq'>
<h2>FAQ</h2>
<button class="btn">如何辦理退換貨?</button>
<div class='content'>
<p>約7-8個工作天完成退款作業。</p>
</div>
<button class="btn">退款方式及退款時間?</button>
<div class='content'>
<p>請參考退貨服務頁面。</p>
</div>
<button class="btn">未退回的退款,是否可直接折抵新訂單?</button>
<div class='content'>
<p>很抱歉,重新訂購時無法直接於新訂單扣抵。</p>
</div>
<button class="btn">發票遺失是否仍能辦理退換貨?</button>
<div class='content'>
<p>很抱歉,需要有發票才能辦理退換貨。</p>
</div>
<button class="btn">什麼情況無法辦理退換貨?</button>
<div class='content'>
<p>超過7天退貨期限,就無法辦理。
</p>
</div>
</div>
</head>
</html>
CSS
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
#faq {
background-color: #C8DBEE;
text-align: center;
margin: 30px 100px;
padding: 20px;
border-radius: 5px;
}
.btn {
background-color: #83B2E1;
color: white;
cursor: pointer;
outline: none;
border: none;
width: 92%;
font-size: 18px;
padding: 15px;
margin: 10px;
}
.btn:hover {
background-color: #3382D0;
}
.btn:after {
content: '\02795';
font-size: 14px;
color: white;
float: right;
padding-top: 3px;
}
.content {
padding: 0 10px;
width: 90%;
align-items: center;
overflow: hidden;
background-color: #f1f1f1;
margin-left: 22px;
max-height: 0;
transition: max-height 0.3s ease-out;
}
.content p {
padding: 10px 5px;
}
.active:after {
content: "\2796";
}
JavaScript
let btn = document.querySelectorAll('.btn')
let i
for (i = 0; i < btn.length; i++) {
btn[i].addEventListener("click", function() {
this.classList.toggle("active");
let content = this.nextElementSibling;
if (content.style.maxHeight){
content.style.maxHeight = null;
} else {
content.style.maxHeight = content.scrollHeight + "px";
}
})
}