Сама нашла решение
Вдруг кому-то пригодится
document.addEventListener('DOMContentLoaded', () => {
const menuItems = document.querySelectorAll('.menu-item');
const backButton = document.getElementById('backButton');
let depth = 0;
menuItems.forEach(item => {
item.addEventListener('click', function(event) {
event.preventDefault();
const submenu = this.nextElementSibling;
if (submenu) {
if (depth === 0) {
backButton.style.display = 'block';
}
depth++;
submenu.classList.add('active');
}
});
});
backButton.addEventListener('click', () => {
const activeSubmenus = document.querySelectorAll('.submenu.active');
if (activeSubmenus.length > 0) {
activeSubmenus[activeSubmenus.length - 1].classList.remove('active');
depth--;
if (depth === 0) {
backButton.style.display = 'none';
}
}
});
});
<button id="backButton" style="display: none;">Назад</button>
<nav class="nav">
<ul id="menu" class="menu">
<li>
<a href="#" class="menu-item">Услуги</a>
<ul class="submenu">
<li>
<a href="#" class="menu-item">Подпункт 1-1</a>
<ul class="submenu">
<li><a href="#" class="menu-item">Подпункт 1-1-1</a></li>
<li><a href="#" class="menu-item">Подпункт 1-1-2</a></li>
</ul>
</li>
<li><a href="#" class="menu-item">Подпункт 1-2</a></li>
</ul>
</li>
<li>
<a href="#" class="menu-item">Наши проекты</a>
<ul class="submenu">
<li>
<a href="#" class="menu-item">Подпункт 2-1</a>
<ul class="submenu">
<li><a href="#" class="menu-item">Подпунк-2-1</a></li>
<li><a href="#" class="menu-item">Подпункт-1-2</a></li>
</ul>
</li>
<li><a href="#" class="menu-item">Подпункт 2-2</a></li>
</ul>
</li>
<li>
<a href="#" class="menu-item">Полезная информация</a>
<ul class="submenu">
<li>
<a href="#" class="menu-item">Подпункт 2-1</a>
<ul class="submenu">
<li><a href="#" class="menu-item">Подпунк-2-1</a></li>
<li><a href="#" class="menu-item">Подпункт-1-2</a></li>
</ul>
</li>
<li><a href="#" class="menu-item">Подпункт 2-2</a></li>
</ul>
</li>
</ul>
</nav>
.menu {
background: red;
height: 100vh;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
.menu-item {
font-weight: 400;
font-size: 20px;
line-height: 100%;
letter-spacing: -0.03em;
color: #222;
border-bottom: none;
}
.submenu {
display: none;
width: 100%;
position: fixed;
top: 30px;
left: 0;
z-index: 10;
background: red;
height: 100vh;
}
.active {
display: block;
}