Bootstrap Accordion - start all closed

36,833

Solution 1

Boostrap 3

Just remove .in from panel1.

<div id="panel1" class="panel-collapse collapse">
   <div class="panel-body">Contents panel 1</div>
</div>

Bootstrap 4

See @Syed Sajid's answer

Solution 2

Bootstrap 4 and 4+ remove class show from collapse show

<div class="collapse">
    <div class="card-body"></div>
</div>

Solution 3

For Bootstrap 5 you also need to collapse the button else while the body won't show, the heading will still be highlighted and the icon indicating the card is open will still display.

Default is;

<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="true" aria-controls="panelsStayOpen-collapseOne">
        Accordion Item #1
</button>

You need to add collapsed to the button & tell aria it's not expanded like this;

<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="false" aria-controls="panelsStayOpen-collapseOne">
        Heading Text
</button>

Then the body can be dealt with as normal by removing show from class="accordion-collapse collapse show"

<div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse" aria-labelledby="panelsStayOpen-headingOne">
 <div class="accordion-body">
  Body Text
 </div>
</div>

Solution 4

Bootstrap 5:

add class collapsed to accordion-button

<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
    Accordion Item
</button>

remove class show from accordion-collapse

<div id="collapseOne" class="accordion-collapse collapse" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
    <div class="accordion-body">content...</div>
</div>

Solution 5

With Boostrap 4, the collapse is closed by default. If you want it to show the content on page load, you can simply add the class show:

<div class="collapse">...</div>  //Content is hidden on page load

<div class="collapse show">...</div>  //Content is shown on page load

As per Bootstrap 4 documention:

  • .collapse hides content
  • .collapse.show shows content
Share:
36,833
becca
Author by

becca

Updated on August 29, 2022

Comments

  • becca
    becca over 1 year

    So I have a bootstrap style accordion on my page - but on start, the first panel is open. How can i make it so that when you load the page, they are all closed?

    Any help would be really appreciated! Thanks so much!

    <div class="panel-group" id="accordion">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a class="accordion-toggle text-normalize" data-toggle="collapse" data-parent="#accordion" href="#panel1"><i class="fa fa-minus text-primary"></i> Overview</a>
                </h4>
            </div>
            <div id="panel1" class="panel-collapse collapse in">
                <div class="panel-body">Contents panel 1</div>
            </div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a class="accordion-toggle text-normalize" data-toggle="collapse" data-parent="#accordion" href="#panel2"><i class="fa fa-plus text-primary"></i> Utilities</a>
                </h4>
            </div>
            <div id="panel2" class="panel-collapse collapse">
                <div class="panel-body">Contents panel 2</div>
            </div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a class="accordion-toggle text-normalize" data-toggle="collapse" data-parent="#accordion" href="#panel3"><i class="fa fa-plus text-primary"></i> Organization</a>
                </h4>
            </div>
            <div id="panel3" class="panel-collapse collapse">
                <div class="panel-body">Contents panel 3</div>
            </div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a class="accordion-toggle text-normalize" data-toggle="collapse" data-parent="#accordion" href="#panel4"><i class="fa fa-plus text-primary"></i> Integrations</a>
                </h4>
            </div>
            <div id="panel4" class="panel-collapse collapse">
                <div class="panel-body">Contents panel 3</div>
            </div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a class="accordion-toggle text-normalize" data-toggle="collapse" data-parent="#accordion" href="#panel5"><i class="fa fa-plus text-primary"></i> Essentials</a>
                </h4>
            </div>
            <div id="panel5" class="panel-collapse collapse">
                <div class="panel-body">Contents panel 3</div>
            </div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a class="accordion-toggle text-normalize" data-toggle="collapse" data-parent="#accordion" href="#panel6"><i class="fa fa-plus text-primary"></i> Sales</a>
                </h4>
            </div>
            <div id="panel6" class="panel-collapse collapse">
                <div class="panel-body">Contents panel 3</div>
            </div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a class="accordion-toggle text-normalize" data-toggle="collapse" data-parent="#accordion" href="#panel7"><i class="fa fa-plus text-primary"></i> Support</a>
                </h4>
            </div>
            <div id="panel7" class="panel-collapse collapse">
                <div class="panel-body">Contents panel 3</div>
            </div>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4 class="panel-title">
                    <a class="accordion-toggle text-normalize" data-toggle="collapse" data-parent="#accordion" href="#panel8"><i class="fa fa-plus text-primary"></i> Projects</a>
                </h4>
            </div>
            <div id="panel8" class="panel-collapse collapse">
                <div class="panel-body">Contents panel 3</div>
            </div>
        </div>
    </div>