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">&uarr;</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%;
}