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');
});

});