JSFiddle - React, Tailwind, and code Playground
by TeslaNick
HTML
<div class="accordion">
<div class="sect bottom">
bottom
</div>
<div class="sect middle">
middle
</div>
<div class="sect top">
top
</div>
</div>
<div class="arr">↑</div>
<div style="text-align: center">Hover Me</div>
CSS
.accordion {
-webkit-perspective: 600px;
position: relative;
height: 50px;
width: 50px;
margin: 50px auto;
}
.sect {
-webkit-transition: -webkit-transform 1s;
-webkit-backface-visibility: hidden;
background: #ccc;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
text-align: center;
line-height: 50px;
cursor: pointer;
border-top: 1px solid #888;
border-bottom: 1px solid #888;
}
.sect.top {
border-radius: 4px 0 0 4px;
border-left: 1px solid #888;
}
.sect.bottom {
border-radius: 0 4px 4px 0;
-webkit-transform: translate3d(0,0,-80px);
border-right: 1px solid #888;
}
.sect.middle {
-webkit-transform: rotateY(180deg) translate(-49px);
-webkit-transform-origin: left top;
}
.accordion:hover .sect.top {
-webkit-transform: translate(-50px);
}
.accordion:hover .sect.middle {
-webkit-transform: rotateY(0);
}
.accordion:hover .sect.bottom {
-webkit-transform: translate3d(50px,0,0);
}
.arr {
position: absolute;
top: 110px;
left: 49%;
font-size: 200%;
}