JSFiddle - React, Tailwind, and code Playground
HTML
<div class="lines">
<div class="line line-top"></div>
<div class="line line-middle "></div>
<div class="line line-bottom"></div>
</div>
CSS
.lines {
position: relative;
width: 2.5em;
height: 1.25em;
display: block;
margin: 100px;
}
.lines .line {
position: absolute;
width: 100%;
height: 1px;
-webkit-transition: background-position 500ms ease-out,transform 250ms ease-out,top 250ms ease-out;
-moz-transition: background-position 500ms ease-out,transform 250ms ease-out,top 250ms ease-out;
-o-transition: background-position 500ms ease-out,transform 250ms ease-out,top 250ms ease-out;
transition: background-position 500ms ease-out,transform 250ms ease-out,top 250ms ease-out;
}
.line-top{
top:0;
background-color:red;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-o-transition: all .3s;
transition: all .3s;
}
.line-middle{
top: .5625em;
height: 2px;
background-color:blue;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-o-transition: all .3s;
transition: all .3s;
}
.lines:hover .line-middle{
background-position: -2.5625em 0;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-o-transition: all .3s;
transition: all .3s;
}
.line-bottom{
bottom:0;
background-color:red;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-o-transition: all .3s;
transition: all .3s;
}
.line-top.active{
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
top:8px;
}
.line-middle.active {
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.line-bottom.active {
display: none;
}
JavaScript
$(document).ready(function() {
$('.lines').on('click', function() {
$('.line').toggleClass('active');
});
});