JSFiddle - React, Tailwind, and code Playground

by akoptsov

HTML

<div id="wrapper" class="left">
    <div id="panel">
        
    </div>
</div>

CSS

#wrapper {
    width: 360px;
    height: 60px;
    margin: auto;
    
    border: 1px solid black;
    position:relative;
    top: 200px;
    
    transition: transform 1s ease-in-out;
}

#wrapper.left {
    transform: rotate(-90deg);
}

#wrapper.right {
    transform: rotate(90deg);
}

#panel {
    position:absolute;
    width: 58px;
    height: 58px;
    transition: left 1s ease-in;
    background-color:red;
    top: 1px;
}

.left #panel {
    left: 1px;
}

.right #panel {
    left: 301px;
}

JavaScript

var wrapper = document.getElementById("wrapper");
var ITERATION = 2100;

function left() {
    wrapper.className = wrapper.className.replace('right', 'left');
    setTimeout(right, ITERATION / 2);    
}

function right() {
    wrapper.className = wrapper.className.replace('left', 'right');
    setTimeout(left, ITERATION / 2);    
}

right();