diff --git a/wiki/menu.html b/wiki/menu.html index d2d24226f877df5f5e315b1a0d235c39513998a2..03f95c79f5bc86c4e471aa5752478b60834af670 100644 --- a/wiki/menu.html +++ b/wiki/menu.html @@ -132,68 +132,46 @@ </ul> </nav> <script> - // var navbox = document.getElementById("navbox"); - // let navbar = document.getElementById("my-navbar"); - // let items = navbar.children; - // function over(el){ - // for (i = 0; i < 4; i++){ - // items[i].children[0].style.color = "#185A4F"; - // } - // el.children[0].style.color = "#62D881"; - // if (el.children.length > 1){ - // let son = el.children[1]; - // if (getComputedStyle(son,null)["display"]=="none"){ - // setTimeout(function(){ - // son.style.opacity = 1; - // }, 1); - // son.style.display = "block"; - // } - // if (document.documentElement.clientWidth > 1400){ - // navbox.style.height = "320px"; - // } - // else if (document.documentElement.clientHeight < 1120){ - // navbox.style.height = "245px"; - // } - // else{ - // navbox.style.height = "280px"; - // } - // } - // } - // function leave(el){ - // for (i = 0; i < 4; i++){ - // items[i].children[0].style.color = "#185A4F"; - // } - // if (el.children.length > 1){ - // let son = el.children[1]; - // if (getComputedStyle(son,null)["display"]=="block"){ - // son.style.opacity = 0; - // setTimeout(function(){ - // son.style.display = "none"; - // }, 350); - // } - // navbox.style.height = "78px"; - // } - // } var navbox = document.getElementById("navbox"); let navbar = document.getElementById("my-navbar"); let items = navbar.children; -function over(el) { - resetColors(); - el.children[0].style.color = "#62D881"; - - // Show the current dropdown +// Add click event listener to each dropdown menu item +for (let i = 0; i < items.length; i++) { + let item = items[i]; + + // Check if the item has a dropdown (sub-menu) + if (item.children.length > 1) { + item.addEventListener('click', function (event) { + toggleDropdown(item); + event.stopPropagation(); // Prevent event bubbling + }); + } +} + +function toggleDropdown(el) { + // Toggle visibility of the dropdown let son = el.children[1]; if (son) { - son.style.visibility = "visible"; - son.style.opacity = 1; - el.classList.add('active'); - adjustNavHeight(); + if (son.style.visibility === "visible") { + closeDropdown(el); + } else { + openDropdown(el); + } } } -function leave(el) { - // Close the current dropdown +function openDropdown(el) { + // Open the dropdown + let son = el.children[1]; + son.style.visibility = "visible"; + son.style.opacity = 1; + el.classList.add('active'); + adjustNavHeight(); +} + +function closeDropdown(el) { + // Close the dropdown let son = el.children[1]; if (son) { son.style.opacity = 0; @@ -220,5 +198,60 @@ function adjustNavHeight() { navbox.style.height = "280px"; } } + +// Close dropdowns when clicking outside +document.addEventListener('click', function () { + for (let i = 0; i < items.length; i++) { + if (items[i].classList.contains('active')) { + closeDropdown(items[i]); + } + } +}); +// var navbox = document.getElementById("navbox"); +// let navbar = document.getElementById("my-navbar"); +// let items = navbar.children; + +// function over(el) { +// resetColors(); +// el.children[0].style.color = "#62D881"; + +// // Show the current dropdown +// let son = el.children[1]; +// if (son) { +// son.style.visibility = "visible"; +// son.style.opacity = 1; +// el.classList.add('active'); +// adjustNavHeight(); +// } +// } + +// function leave(el) { +// // Close the current dropdown +// let son = el.children[1]; +// if (son) { +// son.style.opacity = 0; +// setTimeout(() => { +// son.style.visibility = "hidden"; +// el.classList.remove('active'); +// navbox.style.height = "78px"; // Reset the height +// }, 300); // Match this delay with the CSS transition time +// } +// } + +// function resetColors() { +// for (let i = 0; i < items.length; i++) { +// items[i].children[0].style.color = "#185A4F"; +// } +// } + +// function adjustNavHeight() { +// if (document.documentElement.clientWidth > 1400) { +// navbox.style.height = "320px"; +// } else if (document.documentElement.clientHeight < 1120) { +// navbox.style.height = "245px"; +// } else { +// navbox.style.height = "280px"; +// } +// } </script>