Version 2.0:
- Redesigned with SCSS and smooth animation.
- Added a tab "close" in "open one" option to close other tab.
Acordeon made with just CSS. Based on checkbox input+label trick to active tabs.
| <h1>Pure CSS Accordion <sup>2.0</sup></h1> | |
| <div class="row"> | |
| <div class="col"> | |
| <h2>Open <b>multiple</b></h2> | |
| <div class="tabs"> | |
| <div class="tab"> | |
| <input type="checkbox" id="chck1"> | |
| <label class="tab-label" for="chck1">Item 1</label> | |
| <div class="tab-content"> | |
| Lorem ipsum dolor sit amet consectetur, adipisicing elit. Ipsum, reiciendis! | |
| </div> | |
| </div> | |
| <div class="tab"> | |
| <input type="checkbox" id="chck2"> | |
| <label class="tab-label" for="chck2">Item 2</label> | |
| <div class="tab-content"> | |
| Lorem ipsum dolor sit amet consectetur adipisicing elit. A, in! | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="col"> | |
| <h2>Open <b>one</b></h2> | |
| <div class="tabs"> | |
| <div class="tab"> | |
| <input type="radio" id="rd1" name="rd"> | |
| <label class="tab-label" for="rd1">Item 1</label> | |
| <div class="tab-content"> | |
| Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eos, facilis. | |
| </div> | |
| </div> | |
| <div class="tab"> | |
| <input type="radio" id="rd2" name="rd"> | |
| <label class="tab-label" for="rd2">Item 2</label> | |
| <div class="tab-content"> | |
| Lorem ipsum dolor, sit amet consectetur adipisicing elit. Nihil, aut. | |
| </div> | |
| </div> | |
| <div class="tab"> | |
| <input type="radio" id="rd3" name="rd"> | |
| <label for="rd3" class="tab-close">Close others ×</label> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | 
| $midnight: #2c3e50; | |
| $clouds: #ecf0f1; | |
| // General | |
| body { | |
| color: $midnight; | |
| background: $clouds; | |
| padding: 0 1em 1em; | |
| } | |
| h1 { | |
| margin: 0; | |
| line-height: 2; | |
| text-align: center; | |
| } | |
| h2 { | |
| margin: 0 0 .5em; | |
| font-weight: normal; | |
| } | |
| input { | |
| position: absolute; | |
| opacity: 0; | |
| z-index: -1; | |
| } | |
| // Layout | |
| .row { | |
| display:flex; | |
| .col { | |
| flex:1; | |
| &:last-child { | |
| margin-left: 1em; | |
| } | |
| } | |
| } | |
| /* Accordion styles */ | |
| .tabs { | |
| border-radius: 8px; | |
| overflow: hidden; | |
| box-shadow: 0 4px 4px -2px rgba(0,0,0,0.5); | |
| } | |
| .tab { | |
| width: 100%; | |
| color: white; | |
| overflow: hidden; | |
| &-label { | |
| display: flex; | |
| justify-content: space-between; | |
| padding: 1em; | |
| background: $midnight; | |
| font-weight: bold; | |
| cursor: pointer; | |
| /* Icon */ | |
| &:hover { | |
| background: darken($midnight, 10%); | |
| } | |
| &::after { | |
| content: "\276F"; | |
| width: 1em; | |
| height: 1em; | |
| text-align: center; | |
| transition: all .35s; | |
| } | |
| } | |
| &-content { | |
| max-height: 0; | |
| padding: 0 1em; | |
| color: $midnight; | |
| background: white; | |
| transition: all .35s; | |
| } | |
| &-close { | |
| display: flex; | |
| justify-content: flex-end; | |
| padding: 1em; | |
| font-size: 0.75em; | |
| background: $midnight; | |
| cursor: pointer; | |
| &:hover { | |
| background: darken($midnight, 10%); | |
| } | |
| } | |
| } | |
| // :checked | |
| input:checked { | |
| + .tab-label { | |
| background: darken($midnight, 10%); | |
| &::after { | |
| transform: rotate(90deg); | |
| } | |
| } | |
| ~ .tab-content { | |
| max-height: 100vh; | |
| padding: 1em; | |
| } | |
| } | 
| <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,300,700" rel="stylesheet" /> |