In this tutorial I’m going to show you to create a pure css accordion using radio buttons. In previous tutorials I showed you how to create a pure css accordion using the target selector and also how to create a simple jquery accordion. The difference between this and other other css accordion is that you can set a tab that is open by default.
[tutorial_details]
To get us started, we’re going to create an <ul> list with a few <li> items within. Then we’re going to add a radio button within the <li></li> tags that have a label above them. We’ll use these label to select which tab to open.
After this, we simply add a <div class=”content”></div> below our radio button, and we’re done with out html structure. Here’s how your code should look like:
<ul id="accordion"> <li> <label for="first">Fist Title</label> <input type="radio" name="accordion" id="first" checked> <div class="content"> <p><!-- Tab Content --></p> </div> </li> <li> <label for="second">Second Title</label> <input type="radio" name="accordion" id="second"> <div class="content"> <p><!-- Tab Content --></p> </div> </li> <li> <label for="third">Third Title</label> <input type="radio" name="accordion" id="third"> <div class="content"> <p><!-- Tab Content --></p> </div> </li> </ul>
And to make it actually work like an accordion, we need to apply the following CSS:
#accordion { margin:100px auto; padding:0; width:500px; } #accordion li { list-style:none; width:100%; } #accordion li label { padding:10px; display:block; font-family: 'Bree Serif', 'serif'; font-size:30px; line-height:30px; color:#FFFFFF; background-color:#3498db; border-bottom: solid 8px #2980b9; } /* Hide the radio buttons */ #accordion label + input[type='radio'] { display: none; } /* hide content by default */ #accordion .content { display:none; padding:10px; font-family:Constantia, "Lucida Bright", "DejaVu Serif", Georgia, serif; font-size:19px; line-height:26px; background-color:#2ecc71; } /* Show content boxes when the radio buttons are checked */ #accordion label + input[type='radio']:checked + .content { display:block; }
The first few lines are just for styling our css accordion. Then we use:
#accordion label + input[type='radio'] { display: none; }
To hide the radio buttons. Don\’t worry they work just fine if you click on the label associated with it.
Our content div, ( <div class="content"></div>
) is hidden by default, and this is where magic happens.
The then, when a radio button is clicked, we show the content within the specific <li> using the code below.
#accordion label + input[type='radio']:checked + .content { display:block; }
I hope this tutorial helped you to create a pure css accordion using radio buttons. If you liked this tutorial, make sure to follow me on twitter (@andornagy ) for more awesome tutorials like this.