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";
    }
  })
}