JSFiddle - React, Tailwind, and code Playground

by Axiniya

HTML

<div class="menu-button pushmenu">
  <a href="#"><img src="https://cdn-icons-png.flaticon.com/512/149/149719.png" alt=""></a>
</div>

<div class="pushmenu nav-icon3">
  <a href="#"><img src="https://cdn-icons-png.flaticon.com/512/660/660252.png" alt=""></a>
</div>
<nav>
  <div class="main-menu">
    <ul class="menu-main-menu">
      <li class="menu-parent-item item-001">
        <a href="#">Пункт меню 1 ▶</a>
        <div class="menu-lvl-2">
          <ul class="lvl-2 lvl-2-content-001">
            <li class="menu-child-item">
              <a href="#">Подпункт меню 1 ▶</a>
              <div class="menu-lvl-3">
                <ul class="lvl-3">
                  <li><a href="#">Подподпункт меню 1</a></li>
                  <li><a href="#">Подподпункт меню 2</a></li>
                  <li><a href="#">Подподпункт меню 3</a></li>
                </ul>
              </div>
            </li>
            <li><a href="#">Подпункт 2</a></li>
            <li><a href="#">Подпункт 3</a></li>
          </ul>
        </div>
      </li>
      <li  class="menu-parent-item item-002">
      <a href="#">Пункт меню 2 ▶</a>
        <div class="menu-lvl-2">
          <ul class="lvl-2 lvl-2-content-002">
            <li class="menu-child-item">
              <a href="#">Какой-то контент 1 ▶</a>
              <div class="menu-lvl-3">
                <ul class="lvl-3">
                  <li><a href="#">Вложеность 1</a></li>
                  <li><a href="#">Вложеность 2</a></li>
                  <li><a href="#">Вложеность 3</a></li>
                </ul>
              </div>
            </li>
            <li><a href="#">Какой-то контент 2</a></li>
            <li><a href="#">Какой-то контент 3</a></li>
          </ul>
        </div>
      </li>
      <li><a href="#">Пункт меню 3</a></li>
    </ul>
  </div>
</nav>
<div class="hidden-overley"></div>

CSS

.menu-button img {
  height: 50px;
  width: 50px;
}

.nav-icon3 img {
  height: 50px;
  width: 50px;
}

.main-menu li, a {
  text-decoration: none;
  list-style: none;
  color: black;
}

.main-menu {
    position: fixed;
    width: 200px;
    top: 0;
    height: 100%;
    background: gray;
    margin: 0;
    padding: 0;
    left: -200px;
    z-index: 100;
}

.main-menu.show {
  left: 0;
}

.hidden-overley {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 99;
    background: #000000;
    opacity: 0;
    width: 0;
    height: 0;
    transition: opacity 1s;
}

.hidden-overley.show {
    height: 100%;
    width: 100%;
    opacity: 0.5;
    transition: opacity 1s;
}

.menu-lvl-2 .lvl-2 {
    display: none;
    position: fixed;
    width: 200px;
    left: 200px;
    top: 0;
    list-style: none;
    height: 100%;
    background: darkgray;
    padding: 0;
}

.menu-lvl-3 .lvl-3 {
    display: none;
    position: fixed;
    width: 200px;
    left: 400px;
    top: 0;
    list-style: none;
    height: 100%;
    background: lightgray;
    padding: 0;
}

JavaScript

$(document).ready(function() {

    
    $(".item-001").mouseover(function() {
        $(".lvl-2-content-001").show();
        $(".lvl-2-content-002").hide();
    });
    
        $(".item-002").mouseover(function() {
        $(".lvl-2-content-002").show();
        $(".lvl-2-content-001").hide();
    });
});

document.addEventListener('DOMContentLoaded', () => {

	// получаем все элементы с классом pushmenu
	const pushmenu = document.getElementsByClassName('pushmenu');

	// получаем элемент с классом hidden-overley
	const hiddenOverley = document.querySelector('.hidden-overley');

	// отслеживаем клик клика по оверлею
	hiddenOverley.addEventListener('click', (e) => {
		e.currentTarget.classList.toggle('show');
		document.querySelector('.main-menu').classList.toggle('show');
		document.querySelector('body').classList.toggle('sidebar-opened');
		for( i=0; i < pushmenu.length; i++ ){
				pushmenu[i].classList.toggle('open');
		}
	});

	const pushmenuFunction = function() {
		document.querySelector('.pushmenu').classList.toggle('open');
		document.querySelector('.main-menu').classList.toggle('show');
		document.querySelector('.hidden-overley').classList.toggle('show');
		document.body.classList.toggle('sidebar-opened');
		
	};

	// Отслеживаем клики кнопок с классом pushmenu 
	for( i=0; i < pushmenu.length; i++ ){
		pushmenu[i].addEventListener('click', pushmenuFunction, false);
	}

	// Получим все родительские элементы в меню
	const sidebarAccordeon = document.querySelectorAll('.main-menu .menu-parent-item a:first-child');
	const accordeonFunction =  function() { 
		this.parentNode.querySelector('ul').classList.toggle('show');
	}

});