forked from autonomic-cooperative/cotech-website
		
	Implement burger menu
Rather than attempt to recreate the exact burger menu from the old version of the site, since it requires a number of dependencies, I've added a burger menu with some inline javascript to handle the toggle states. I used Claude 4 to help generate the CSS here.
This commit is contained in:
		| @ -5,6 +5,14 @@ | ||||
|     </a> | ||||
|   </div> | ||||
|   <div> | ||||
|     <button class="header_burger-btn" aria-label="Toggle menu"> | ||||
|       <svg class="header_burger-icon" width="24" height="24" viewBox="0 0 24 24" fill="none"> | ||||
|         <path d="M3 6h18M3 12h18M3 18h18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> | ||||
|       </svg> | ||||
|       <svg class="header_close-icon" width="24" height="24" viewBox="0 0 24 24" fill="none"> | ||||
|         <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> | ||||
|       </svg> | ||||
|     </button> | ||||
|     <ul class="header_menu-list"> | ||||
|       <li><a href="/#members">Members</a></li> | ||||
|       <li><a href="/about">About</a></li> | ||||
| @ -12,4 +20,23 @@ | ||||
|       <li><a href="/#contact">Contact</a></li> | ||||
|     </ul> | ||||
|   </div> | ||||
|  | ||||
|   <script> | ||||
|     document.addEventListener('DOMContentLoaded', function() { | ||||
|       const burgerBtn = document.querySelector('.header_burger-btn'); | ||||
|       const menuList = document.querySelector('.header_menu-list'); | ||||
|  | ||||
|       burgerBtn.addEventListener('click', function() { | ||||
|         menuList.classList.toggle('active'); | ||||
|         burgerBtn.classList.toggle('active'); | ||||
|       }); | ||||
|  | ||||
|       const menuLinks = document.querySelectorAll('.header_menu-list a'); | ||||
|       menuLinks.forEach(link => { | ||||
|         link.addEventListener('click', function() { | ||||
|           menuList.classList.remove('active'); | ||||
|         }); | ||||
|       }); | ||||
|     }); | ||||
|   </script> | ||||
| </header> | ||||
|  | ||||
| @ -126,6 +126,63 @@ section.content h2 { | ||||
|   letter-spacing: 0.05em; | ||||
| } | ||||
|  | ||||
| .header_burger-btn { | ||||
|   display: none; | ||||
|   background: none; | ||||
|   border: none; | ||||
|   cursor: pointer; | ||||
|   padding: var(--space-xs); | ||||
|   color: var(--cotech-dark-grey); | ||||
| } | ||||
|  | ||||
| .header_close-icon { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| @media screen and (width < 480px) { | ||||
|   .header { | ||||
|     position: relative; | ||||
|   } | ||||
|  | ||||
|   .header_burger-btn { | ||||
|     display: block; | ||||
|   } | ||||
|  | ||||
|   .header_menu-list { | ||||
|     position: fixed; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     width: 100vw; | ||||
|     height: 100vh; | ||||
|     background-color: var(--cotech-white); | ||||
|     flex-direction: column; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     gap: var(--space-lg); | ||||
|     font-size: 1.5rem; | ||||
|     z-index: 1000; | ||||
|     transform: translateX(-100%); | ||||
|     transition: transform 0.2s ease; | ||||
|   } | ||||
|  | ||||
|   .header_menu-list.active { | ||||
|     transform: translateX(0); | ||||
|   } | ||||
|  | ||||
|   .header_burger-btn.active .header_burger-icon { | ||||
|     display: none; | ||||
|   } | ||||
|  | ||||
|   .header_burger-btn.active .header_close-icon { | ||||
|     display: block; | ||||
|   } | ||||
|  | ||||
|   .header_burger-btn { | ||||
|     position: relative; | ||||
|     z-index: 1001; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .hero { | ||||
|   width: 100%; | ||||
|   padding: var(--space-lg) var(--space-sm); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user