From c0813e1cef940587abee438765b985744d28401b Mon Sep 17 00:00:00 2001 From: HouTeng Chan <ht-chen21@mails.tsinghua.edu.cn> Date: Tue, 1 Oct 2024 08:34:26 +0000 Subject: [PATCH] Update file menu.html --- wiki/menu.html | 405 ++++++++++++++++++++++--------------------------- 1 file changed, 178 insertions(+), 227 deletions(-) diff --git a/wiki/menu.html b/wiki/menu.html index b723e958..0a07d7c1 100644 --- a/wiki/menu.html +++ b/wiki/menu.html @@ -3,243 +3,194 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Responsive Navigation Bar</title> + <title>Navigation Bar</title> <style> - body { - margin: 0; - font-family: Arial, sans-serif; - } - .my-nav { - background-color: rgba(255, 228, 225, 0.95); - padding: 0 20px; - position: fixed; - width: 100%; - top: 0; - left: 0; - z-index: 1000; - height: 50px; - border-bottom: 2px solid #fa8072; - box-shadow: 0 2px 10px rgba(0,0,0,0.1); - display: flex; - justify-content: center; - align-items: center; - box-sizing: border-box; - } - .nav-container { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - max-width: 1200px; - position: relative; - } - .my-navbar { - list-style-type: none; - padding: 0; - margin: 0; - display: flex; - align-items: center; - height: 100%; - } - .my-navbar > li { - position: relative; - height: 100%; - display: flex; - align-items: center; - } - .my-navbar > li > a { - color: #333; - text-decoration: none; - padding: 0 15px; - display: flex; - align-items: center; - height: 100%; - transition: all 0.3s ease; - font-weight: 500; - letter-spacing: 0.5px; - } - .my-navbar > li > a:hover, - .my-navbar > li > a.active { - background-color: #fa8072; - color: white; - } - .son { - display: none; - position: absolute; - background-color: rgba(255, 255, 255, 0.95); - min-width: 200px; - box-shadow: 0 8px 16px rgba(0,0,0,0.1); - z-index: 1; - opacity: 0; - transition: all 0.3s ease; - top: 100%; - left: 0; - border-radius: 0 0 10px 10px; - overflow: hidden; - } - .son li { - margin: 0; - } - .son li a { - color: #333; - padding: 12px 20px; - text-decoration: none; - display: block; - transition: all 0.3s ease; - white-space: nowrap; - } - .son li a:hover { - background-color: #fa8072; - color: white; - } - .menu-icon { - display: none; - cursor: pointer; - padding: 10px; - position: absolute; - left: 10px; - top: 50%; - transform: translateY(-50%); - } - .menu-icon div { - width: 25px; - height: 3px; - background-color: #333; - margin: 5px 0; - transition: all 0.3s ease; - } - @media (max-width: 768px) { - .menu-icon { - display: block; - } - .my-navbar { - position: fixed; - left: -100%; - top: 52px; - flex-direction: column; - background-color: rgba(255, 228, 225, 0.95); - width: 100%; - text-align: center; - transition: 0.3s; - box-shadow: 0 10px 27px rgba(0, 0, 0, 0.05); - height: calc(100% - 52px); - overflow-y: auto; - } - .my-navbar.active { - left: 0; - } - .my-navbar > li { - margin: 0; - width: 100%; - height: auto; - } - .my-navbar > li > a { - padding: 15px; - width: 100%; - box-sizing: border-box; - } - .son { - position: static; - display: none; - background-color: rgba(250, 128, 114, 0.1); - box-shadow: none; - opacity: 1; - width: 100%; - } - .son.active { - display: block; - } - } + + .my-nav { + background-color: rgba(255, 228, 225, 0.95); + padding: 10px 0; + position: fixed; + width: 100%; + top: 0; + left: 0; + z-index: 1000; + height: 50px; + border-bottom: 2px solid #fa8072; + box-shadow: 0 2px 10px rgba(0,0,0,0.1); + display: flex; + justify-content: center; + transition: all 0.3s ease; + } + .my-navbar { + list-style-type: none; + padding: 0; + margin: 0; + display: flex; + justify-content: center; + align-items: center; + height: 100%; + } + + .my-navbar > li { + position: relative; + margin: 0 15px; + } + + .my-navbar > li > a { + color: #333; + text-decoration: none; + padding: 10px 15px; + display: block; + border-radius: 20px; + transition: all 0.3s ease; + font-weight: 500; + letter-spacing: 0.5px; + } + + .my-navbar > li > a:hover, + .my-navbar > li > a.active { + background-color: #fa8072; + color: white; + transform: translateY(-2px); + box-shadow: 0 4px 10px rgba(250, 128, 114, 0.3); + } + + .son { + display: none; + position: absolute; + background-color: rgba(255, 255, 255, 0.95); + min-width: 200px; + box-shadow: 0 8px 16px rgba(0,0,0,0.1); + z-index: 1; + opacity: 0; + transition: all 0.3s ease; + top: 100%; + border-radius: 10px; + overflow: hidden; + padding: 5px; /* Add some padding */ + } + + .son li { + margin: 5px 0; + } + + .son li a { + color: #333; + padding: 12px 20px; + text-decoration: none; + display: block; + transition: all 0.3s ease; + white-space: nowrap; + border-radius: 20px; + } + + .son li a:hover { + background-color: #fa8072; + color: white; + transform: translateY(-2px); + box-shadow: 0 4px 10px rgba(250, 128, 114, 0.3); + } + + @media (max-width: 768px) { + .my-nav { + height: auto; + padding: 10px; + } + + .my-navbar { + flex-direction: column; + align-items: flex-start; + } + + .my-navbar > li { + margin: 5px 0; + } + + .logo-container { + position: static; + margin-bottom: 10px; + } + + .navbar-logo { + height: 100px; + } + } </style> </head> + <body> <nav class="my-nav" id="navbox"> - <div class="nav-container"> - <div class="menu-icon" onclick="toggleMenu()"> - <div></div> - <div></div> - <div></div> - </div> - <ul class="my-navbar" id="my-navbar"> - <li><a href="{{ url_for('home') }}">Home</a></li> - <li> - <a href="#" onclick="toggleSubmenu(this)">Project</a> - <ul class="son"> - <li><a href="{{ url_for('pages', page='description') }}">Description</a></li> - <li><a href="{{ url_for('pages', page='engineering') }}">Engineering</a></li> - <li><a href="{{ url_for('pages', page='proof-of-concept') }}">Proof Of Concept</a></li> - <li><a href="{{ url_for('pages', page='safety') }}">Safety</a></li> - <li><a href="{{ url_for('pages', page='contribution') }}">Contribution</a></li> - </ul> - </li> - <li> - <a href="#" onclick="toggleSubmenu(this)">Wetlab</a> - <ul class="son"> - <li><a href="{{ url_for('pages', page='therapy-system') }}">Therapy System</a></li> - <li><a href="{{ url_for('pages', page='colonization') }}">Colonization</a></li> - <li><a href="{{ url_for('pages', page='parts') }}">Parts</a></li> - </ul> - </li> - <li> - <a href="#" onclick="toggleSubmenu(this)">Drylab</a> - <ul class="son"> - <li><a href="{{ url_for('pages', page='model') }}">Model</a></li> - <li><a href="{{ url_for('pages', page='hardware') }}">Hardware</a></li> - </ul> - </li> - <li> - <a href="#" onclick="toggleSubmenu(this)">Human Practices</a> - <ul class="son"> - <li><a href="{{ url_for('pages', page='human-practices') }}">Details</a></li> - <li><a href="{{ url_for('pages', page='education') }}">Education</a></li> - <li><a href="{{ url_for('pages', page='inclusivity') }}">Inclusivity</a></li> - </ul> - </li> - <li> - <a href="#" onclick="toggleSubmenu(this)">Team</a> - <ul class="son"> - <li><a href="{{ url_for('pages', page='team') }}">Roster</a></li> - <li><a href="{{ url_for('pages', page='attributions') }}">Attributions</a></li> - <li><a href="{{ url_for('pages', page='tryhomepage') }}">Try</a></li> - </ul> - </li> - </ul> - </div> + <ul class="my-navbar" id="my-navbar"> + <li><a href="{{ url_for('home') }}">Home</a></li> + <li onmouseover="over(this)" onmouseleave="leave(this)"> + <a href="#" style="cursor:default;">Project</a> + <ul class="son"> + <li><a href="{{ url_for('pages', page='description') }}">Description</a></li> + <li><a href="{{ url_for('pages', page='engineering') }}">Engineering</a></li> + <li><a href="{{ url_for('pages', page='proof-of-concept') }}">Proof Of Concept</a></li> + <li><a href="{{ url_for('pages', page='safety') }}">Safety</a></li> + <li><a href="{{ url_for('pages', page='contribution') }}">Contribution</a></li> + </ul> + </li> + <li onmouseover="over(this)" onmouseleave="leave(this)"> + <a href="#" style="cursor:default;">Wetlab</a> + <ul class="son"> + <li><a href="{{ url_for('pages', page='therapy-system') }}">Therapy System</a></li> + <li><a href="{{ url_for('pages', page='colonization') }}">Colonization</a></li> + <li><a href="{{ url_for('pages', page='parts') }}">Parts</a></li> + </ul> + </li> + <li onmouseover="over(this)" onmouseleave="leave(this)"> + <a href="#" style="cursor:default;">Drylab</a> + <ul class="son"> + <li><a href="{{ url_for('pages', page='model') }}">Model</a></li> + <li><a href="{{ url_for('pages', page='hardware') }}">Hardware</a></li> + </ul> + </li> + <li onmouseover="over(this)" onmouseleave="leave(this)"> + <a href="#" style="cursor:default;">Human Practices</a> + <ul class="son"> + <li><a href="{{ url_for('pages', page='human-practices') }}">Details</a></li> + <li><a href="{{ url_for('pages', page='education') }}">Education</a></li> + <li><a href="{{ url_for('pages', page='inclusivity') }}">Inclusivity</a></li> + </ul> + </li> + <li onmouseover="over(this)" onmouseleave="leave(this)"> + <a href="#" style="cursor:default;">Team</a> + <ul class="son"> + <li><a href="{{ url_for('pages', page='team') }}">Roster</a></li> + <li><a href="{{ url_for('pages', page='attributions') }}">Attributions</a></li> + <li><a href="{{ url_for('pages', page='tryhomepage') }}">Try</a></li> + </ul> + </li> + </ul> </nav> <script> - function toggleMenu() { - const navbar = document.getElementById('my-navbar'); - navbar.classList.toggle('active'); - } - - function toggleSubmenu(el) { - if (window.innerWidth <= 768) { - event.preventDefault(); - const submenu = el.nextElementSibling; - submenu.classList.toggle('active'); + function over(el){ + el.children[0].classList.add('active'); + if (el.children.length > 1){ + let son = el.children[1]; + if (getComputedStyle(son,null)["display"]=="none"){ + son.style.display = "block"; + setTimeout(function(){ + son.style.opacity = 1; + }, 10); + } } } - - // Close the menu when clicking outside - document.addEventListener('click', function(event) { - const navbar = document.getElementById('my-navbar'); - const menuIcon = document.querySelector('.menu-icon'); - if (!navbar.contains(event.target) && !menuIcon.contains(event.target)) { - navbar.classList.remove('active'); - } - }); - - // Handle window resize - window.addEventListener('resize', function() { - const navbar = document.getElementById('my-navbar'); - if (window.innerWidth > 768) { - navbar.classList.remove('active'); - document.querySelectorAll('.son').forEach(function(submenu) { - submenu.classList.remove('active'); - }); - } - }); + function leave(el){ + el.children[0].classList.remove('active'); + 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"; + }, 300); + } + } + } </script> </body> </html> \ No newline at end of file -- GitLab