Bootstrap Accordion - start all closed
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
becca
Updated on August 29, 2022Comments
-
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>