CSS3 Accordion (No Javascript) - Vertical - Multiple Visible
Pure HTML/CSS3 accordion using absolutely no javascript.
This version uses vertical accordion type allowing multiple panels to be visible simultaneously.
by Guruprasad Rao
January 29, 2016
HTML
<div class="accordion vertical">
<ul>
<li>
<input type="checkbox" id="checkbox-1" name="checkbox-accordion" value="Title One"/>
<label for="checkbox-1">Title One</label>
<div class="content">
<p>
First Title content
</p><br>
<input type="button" class="btn btn-default" value="One" id="buttonOne"/><br>
</div>
</li>
<li>
<input type="checkbox" id="checkbox-2" name="checkbox-accordion1" value="Title Two"/>
<label for="checkbox-2">Title Two</label>
<div class="content">
<p>
Second Title content
</p><br>
<input type="button" class="btn btn-default" value="Two" id="buttonTwo"/><br>
</div>
</li>
<li>
<input type="checkbox" id="checkbox-3" name="checkbox-accordion2" value="Title Three"/>
<label for="checkbox-3">Title Three</label>
<div class="content">
<p>
Third Title content
</p><br>
<input type="button" class="btn btn-default" value="Three" id="buttonThree"/><br>
</div>
</li>
<li>
<input type="checkbox" id="checkbox-4" name="checkbox-accordion3" value="Title Four"/>
<label for="checkbox-4">Title Four</label>
<div class="content">
<p>
Fourth Title content
</p><br>
<input type="button" class="btn btn-default" value="Four" id="buttonFour"/><br>
</div>
</li>
</ul>
<input type="submit" value="Submit" id="submitJson" class="btn btn-default" id="submitJson">
</div>
CSS
.accordion {
font-family:Arial, Helvetica, sans-serif;
margin:0 auto;
font-size:14px;
border:1px solid #542437;
border-radius:10px;
width:600px;
padding:10px;
background:#fff;
}
.accordion ul {
list-style:none;
margin:0;
padding:0;
}
.accordion li {
margin:0;
padding:0;
}
.accordion [type=radio], .accordion [type=checkbox] {
display:none;
}
.accordion label {
display:block;
font-size:16px;
line-height:16px;
background:#D95B43;
border:1px solid #542437;
color:#542437;
text-shadow:1px 1px 1px rgba(255,255,255,0.3);
font-weight:700;
cursor:pointer;
text-transform:uppercase;
-webkit-transition: all .2s ease-out;
-moz-transition: all .2s ease-out;
}
.accordion ul li label:hover, .accordion [type=radio]:checked ~ label, .accordion [type=checkbox]:checked ~ label {
background:#C02942;
color:#FFF;
text-shadow:1px 1px 1px rgba(0,0,0,0.5)
}
.accordion .content {
padding:0 10px;
overflow:hidden;
border:1px solid #fff; /* Make the border match the background so it fades in nicely */
-webkit-transition: all .5s ease-out;
-moz-transition: all .5s ease-out;
}
.accordion p {
color:#333;
margin:0 0 10px;
}
.accordion h3 {
color:#542437;
padding:0;
margin:10px 0;
}
/* Vertical */
.vertical ul li {
overflow:hidden;
margin:0 0 1px;
}
.vertical ul li label {
padding:10px;
}
.vertical [type=radio]:checked ~ label, .vertical [type=checkbox]:checked ~ label {
border-bottom:0;
}
.vertical ul li label:hover {
border:1px solid #542437; /* We don't want the border to disappear on hover */
}
.vertical ul li .content {
height:0px;
border-top:0;
}
.vertical [type=radio]:checked ~ label ~ .content, .vertical [type=checkbox]:checked ~ label ~ .content {
height:300px;
border:1px solid #542437;
}
JavaScript
(function() {
var submitButtonValue;
submitButtonValue = {};
$('input[id=checkbox-1],input[id=checkbox-2],input[id=checkbox-3],input[id=checkbox-4]').click(function() {
var name;
name = $(this).attr('name');
submitButtonValue[name] = $(this).val();
});
$('#submitJson').click(function() {
console.log(JSON.stringify(submitButtonValue));
});
})();