搜尋

首頁  >  問答  >  主體

手風琴開關

<p>我在Codepen上編輯的手風琴效果運作良好。然而,當點擊多個問題時,我希望先前的答案在當前答案打開時關閉。有什麼方法可以實現嗎? </p> <p>Codepen連結在這裡</p> <p><em><strong>另外</strong></em>,當使用Font Awesome 4.7.0時,以下Unicode顯示正常。 </p> <pre class="brush:php;toolbar:false;">(f055 & f056) Unicodes</pre> <p>但切換到Font Awesome 5.14.5後,Unicode就不再運作。 </p>
P粉517090748P粉517090748451 天前458

全部回覆(1)我來回復

  • P粉066224086

    P粉0662240862023-09-04 00:52:22

    關閉其他按鈕,再次循環所有onclick內的按鈕,對於字體,將font-family: "FontAwesome";替換為font-family: "Font Awesome\ 5 Free";

    #
    const accordionBtns = document.querySelectorAll(".accordion");
    
    accordionBtns.forEach((accordion) => {
      accordion.onclick = function() {
        this.classList.toggle("is-open");
        let content = this.nextElementSibling;
        if (content.style.maxHeight) {
          content.style.maxHeight = null;
        } else {
          // add this line
          accordionBtns.forEach(acc => acc.nextElementSibling.style.maxHeight = null)
          content.style.maxHeight = content.scrollHeight + "px";
        }
      };
    });
    .faq-container {
      width: 80%;
      max-width: 600px;
      margin: 50px auto;
    }
    
    button.accordion {
      width: 100%;
      background: #C0C0C0;
      border: none;
      outline: none;
      text-align: left;
      padding: 15px 20px;
      font-size: 18px;
      font-weight: bold;
      color: #4169E1;
      cursor: pointer;
      transition: background-color 2.2s linear;
    }
    
    button.accordion:after {
      content: "\f055";
      font-family: "Font Awesome\ 5 Free";
      font-size: 18px;
      float: right;
    }
    
    button.accordion.is-open:after {
      content: "\f056";
    }
    
    button.accordion:hover,
    button.accordion.is-open {
      color: #FFF;
      background: #4169E1;
      /*border-left: 2px solid #C0C0C0;
      border-right: 2px solid #C0C0C0;
      border-top: 2px solid #C0C0C0;
      border-bottom: 2px solid #C0C0C0;*/
    }
    
    .accordion-content {
      font-family: Arial;
      font-weight: bold;
      color: #663399;
      background: #FFF;
      border-left: 2px solid #C0C0C0;
      border-right: 2px solid #C0C0C0;
      border-bottom: 2px solid #C0C0C0;
      padding: 0 20px;
      max-height: 0;
      overflow: hidden;
      transition: max-height 0.2s ease-in-out;
    }
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.4/css/all.min.css">
    
    <div class="faq-container">
    
      <h1 style="text-align: center; font-family: Arial; color: #663399">FAQ Accordion</h1>
    
      <button class="accordion">When Is It?</button>
      <div class="accordion-content">
        <p>
          On The Date That We Select.
          <br> On The Date That We Select.
        </p>
      </div>
    
      <button class="accordion">Why Is It.</button>
      <div class="accordion-content">
        <p>
          Because We Chose To.
        </p>
      </div>
    
      <button class="accordion">Where Is It</button>
      <div class="accordion-content">
        <p>
          At The Place That We Select.
        </p>
      </div>
    </div>

    回覆
    0
  • 取消回覆