v2.5.2
Giriş yap

Javascript Accordion

onlywhatchess
595 defa görüntülendi

Bir accordion yapmaya çalışıyorum, her şey güzel gidiyordu tâki açık olan accordionların hepsinin kapanmasını istiyene kadar.
Yapmak istediklerim:

  • Hepsinin kapalı duruma getirebilir olması
  • Açık olmayan bir accordion butonuna tıklarsam açık olan kapanıp tıkladığımın açılması
  • slideUp / slideDown efekti gibi kapanıp açıklabiliyor olması

Şuana kadar gelebildiğim nokta -> codepen.io


<section class="accordion">
    <button role="button">Accordion 1</button>
    <div class="content 1 show">
        <p>1 Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cupiditate id, cumque in vel
            temporibus incidunt nihil alias. Officia libero est labore fuga, voluptates voluptatum nisi
            facere reprehenderit ab voluptas aliquam.</p>
    </div>
</section>
<section class="accordion">
    <button role="button">Accordion 2</button>
    <div class="content 2">
        <p>2 Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid sequi eveniet commodi rerum
            doloribus illum quaerat vitae id dignissimos nam neque repellendus, voluptatibus tempore
            sapiente officia rem! Laudantium, voluptatem deserunt?</p>
    </div>
</section>
<section class="accordion">
    <button role="button">Accordion 3</button>
    <div class="content 3">
        <p>3 Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem nisi eius doloribus, doloremque
            asperiores omnis repudiandae? Commodi culpa ipsa, enim sequi minus esse, natus, similique ad
            libero adipisci voluptatibus doloribus.</p>
    </div>
</section>

.accordion button {
    width: 100%;
    text-align: left;
    padding: 1rem 2rem;
    transition: .4s;
    color: #444;
    background-color: #eee;
}

.accordion button:hover {
    background-color: #ddd;
}

.accordion .content {
    background-color: #fff;
    padding: 1rem 2rem;
    display: none;
}

.accordion .content.show {
    display: block;
}

const buttons = document.querySelectorAll('.accordion button');
buttons.forEach(function (e) {
    e.onclick = function () {
        let content = e.nextElementSibling;
        let cotents = document.querySelectorAll('.accordion .content');
        cotents.forEach(function (c) {
            c.classList.remove('show');
        });
        content.classList.add('show');
    }
});

onlywhatchess
1356 gün önce

Kodları ->

.accordion .content {
  background-color: #fff;
  transition: height .2s ease-in-out;
  height: 0;
  overflow: hidden;
}

.accordion .content.show {
  height: 100px;
}
const buttons = document.querySelectorAll('.accordion button');
let cotents = document.querySelectorAll('.accordion .content');
buttons.forEach(function (e) {
    e.onclick = function () {
        let content = e.nextElementSibling;
        if (content.classList.contains('show')) {
            content.classList.remove('show');
        } else {
            cotents.forEach(function (c) {
                c.classList.remove('show');
            });
            content.classList.add('show');
        }
    }
});