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

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));
  });
})();