JSFiddle - React, Tailwind, and code Playground
HTML
<div class="accordion">
<label>
<input type="radio" name="accordion-radio" />
<strong>Título 1</strong>
<div>Conteúdo 1</div>
</label>
<label>
<input type="radio" name="accordion-radio" />
<strong>Título 2</strong>
<div>Conteúdo 2</div>
</label>
<label>
<input type="radio" name="accordion-radio" />
<strong>Título 3</strong>
<div>Conteúdo 3</div>
</label>
</div>
CSS
.accordion{
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 14px;
margin-top: 40px;
}
.accordion label{
background: #f1f1f1;
border: 1px solid #ccc;
border-radius: 5px;
box-sizing: border-box;
display: block;
margin-top: 1px;
position: relative;
}
.accordion strong{
box-sizing: border-box;
display: block;
height: 34px;
margin-top: 1px;
padding: 7px;
position: relative;
}
.accordion strong:after{
content: '';
border: 7px solid transparent;
border-top: 10px solid #282828;
position: absolute;
top: 12px;
right: 15px;
-webkit-transition: all .3s ease-out;
transition: all .3s ease-out;
}
.accordion input{
height: 34px;
left: 0;
opacity: 0;
position: absolute;
top: 0;
width: 100%;
z-index: 1;
}
.accordion input:checked + strong:after{
top: 4px;
right: 15px;
-ms-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
.accordion input:checked + strong + div{
padding: 10px 20px;
height: auto;
}
.accordion div{
background: #fff;
box-sizing: border-box;
border-top: 1px solid #ccc;
border-radius: 0 0 5px 5px;
height: 0;
padding: 0 20px;
overflow: hidden;
-webkit-transition: all .3s ease-out;
transition: all .3s ease-out;
}