Как сделать плавную анимацию бокового меню . How to create animation of burger menu

Как сделать плавную анимацию бокового меню . How to create animation of burger menu

Перепробовал много вариантов, ничего не работает. Нужно сделать плавную анимацию слева на право для бокового меню

Мой код

.left-menu {

display: block;

background-color: white;

width: 250px;

margin-left: 0;

height: 100%;

color: black;

text-align: left;

padding: 0;

margin: 0;

overflow: hidden;

transition: all 0.5s ease;
}

.left-menu ul {

padding-top: 10px;

overflow: hidden;

list-style-type: none; /* Забираємо маркери списку */
}

.left-menu ul li a {

overflow: hidden;

margin-left: 10px;

text-decoration: none; /* Прибираємо підкреслення з посилання */

color: black; /* Колір тексту чорний */

display: flex; /* Робимо, щоб посилання займало весь рядок */

padding: 10px;

font-size: 20px;

margin-bottom: 0;

line-height: 1;

transition: all 0.5s ease;
}

.left-menu ul li a:hover {

padding-left: 25px;

transition: all 0.5s ease;
}

.left-menu ul li {

overflow: hidden;

margin: 0; 

padding: 0;
}

Также есть кнопка которая отвечает за открытия и закрытия

Открытия

#burgerMenuBtn {

background-color: transparent;

border: none;
}

Закрытия <button id="closeOverlay">

То при открытии и закрытии нужно сделать анимацию

Боковое меню скрито по умолчанию с помощью display: none; То нужно чтобы анимация была сразу при нажатии кнопки, то есть чтобы она вилетала слева в право и наоборот при закрытии.

Буду рад если поможете, очень срочно надо???

В результате у меня была без анимации, пробовал юзать transform, transition, @keyframes не помогло


Ответы (1 шт):

Автор решения: Евгений Ли

Вы хотели этого я так понял. Здесь я простой пример привёл через hover. Делается это при помощи абсолюта и смещения влево, а исчезает он, потому что у его родителя(в данном случае body) overflow-x:hidden выставлен.
Вам же нужно убрать display:none и сделать как у меня на смещении. Код на JS вы сказали у вас готов. display: none не работает, так как на него не работает transition, а вот на смещение он реагирует.

body {
  position: relative;
  width: 100%;
  margin: 0;
  padding: 0;
  height: 300px;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow-x: hidden;
}

button {
  
}
button + .menu {
  position: absolute;
  left: -200px;
  top: 0;
  bottom: 0;
  display: block;
  width: 200px;
  height: 100vh;
  background-color: orange;
  transition: 0.5s;
}
button:hover + .menu {
  left: 0;
}
<body>
  <button>Кнопка</button>
  <div class="menu">
  
  </div>
</body

→ Ссылка