JSFiddle - React, Tailwind, and code Playground

by sridhar reddy

HTML

<div class="wrapper">
  <div class="sidebar">
    <div class="icons">
      <a href="#"><img src='http://placehold.it/73/200' class="skate"></a>
    </div>


    <div class="menu">
      <ul>
        <a href="#">
          <li>Explore</li>
        </a>
        <a href="#">
          <li>Shop</li>
        </a>
        <a href="#">
          <li>Learn</li>
        </a>
      </ul>
    </div>
  </div>
 
 <script>
 		var icons = document.getElementsByClassName("icons")[0];
    var skateboard = document.getElementsByClassName('skate')[0];
    icons.addEventListener('click', (e) => {
      if (e.target.className === "skate") {
        skateboard.classList.add('skateOff');
      } else {
        navigation.classList.add('slideIn');
      }
    })
 </script>

CSS

@keyframes skateOff {
  0% {
    transform: rotate(0);
  }
  50% {
    transform: rotate(49deg);
  }
  100% {
    transform: translateX(-300px);
  }
}

.skateOff {
  animation: skateOff ease-in 1s forwards;
}

.x {
  visibility: hidden;
}

.xslide {
  animation: slideOut .8s;
  animation-timing-function: ease;
  animation-delay: 2s;
  animation-fill-mode: forwards;
}

.menu {
  visibility: hidden;
  color: black;
  width: 10em;
  background-color: white;
  border-radius: 4px;
}

.slideOut {
  animation: slideOut 1s;
  animation-fill-mode: forwards;
  animation-delay: 1.2s;
}

@keyframes slideOut {
  0% {
    transform: translateX(-50%);
  }
  100% {
    visibility: visible;
    transform: translateX(0);
  }
}

.slideIn {
  animation: slideIn 2s;
  animation-timing-function: ease;
  animation-fill-mode: forwards;
}

@keyframes slideIn {
  0% {
    visibility: visible;
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}