I have a vision to create a navigation for an admin template that works on both mobile and desktop. So far I have done a test. But I think my code is a bit clumsy, so I wonder if there is a simpler way to write this code. The meny should work with both the hamburger meny AND when resizing the window. Both phone and desktop. The menu should expand and collapse in two steps.
My question is if there is a way to simplify this further? Or make the navigation better / simpler?
http://94.237.92.101:6060/home
/* manage the sidenav via resizing and hamburger */
window.addEventListener("load", close);
function close() {
var win = window.innerWidth;
if (win < 769) {
if (localStorage.menu == "opensub") {
subnav.classList.add("close")
window.localStorage.setItem('menu', "closesub");
} else {
subnav.classList.remove("close")
window.localStorage.setItem('menu', "opensub");
}
}
}
window.addEventListener("resize", resize);
function resize() {
var win = window.innerWidth;
if (win < 480) {
window.localStorage.setItem('menu', "closemain");
} else if (win < 769) {
window.localStorage.setItem('menu', "openmain");
} else {
window.localStorage.setItem('menu', "opensub");
}
menu() // update menu
}
function menu() {
switch (localStorage.menu) {
case "openmain":
mainnav.classList.remove("close")
subnav.classList.add("close")
window.localStorage.setItem('menu', "opensub");
break;
case "opensub":
mainnav.classList.remove("close")
subnav.classList.remove("close")
window.localStorage.setItem('menu', "closesub");
break;
case "closesub":
mainnav.classList.remove("close")
subnav.classList.add("close")
window.localStorage.setItem('menu', "closemain");
break;
case "closemain":
mainnav.classList.add("close")
subnav.classList.add("close")
window.localStorage.setItem('menu', "openmain");
break;
}
}