Fullscreen Hamburger Navigation Interactions
File Size: | 5.37 KB |
---|---|
Views Total: | 2477 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |
A mobile-first navigation system written in jQuery and CSS/CSS3 that morphs a hamburger toggle button into a fullscreen navigation menu when triggered.
See It In Action:
See the Pen Hamburger Menu Interaction by Tsukasa Aoki (@TKS31) on CodePen.
How to use it:
1. Create a fullscreen navigation menu for your web app.
<nav class="nav js-nav"> <ul class="nav__list js-nav__list"> <li class="nav__item"> <a href="#" class="nav__link">Home</a> </li> <li class="nav__item"> <a href="#" class="nav__link">About</a> </li> <li class="nav__item"> <a href="#" class="nav__link">Contact</a> </li> </ul> </nav>
2. The necessary CSS styles for the fullscreen navigation menu.
.nav { display: block; position: absolute; bottom: 16px; right: 16px; background-color: #222; height: 50px; width: 50px; border-radius: 50%; z-index: 10; transition-duration: .4s; } .nav.open { background-color: rgba(0, 0, 0, 0.9); width: 320px; height: 480px; position: absolute; right: 0px; bottom: 0px; border-radius: 0; display: flex; justify-content: center; align-items: center; } .nav__list { display: none; } .nav__list.show { display: flex; flex-direction: column; list-style: none; margin: 0; padding: 0; } .nav__item { display: flex; align-items: center; justify-content: center; background-color: transparent; width: 100%; opacity: 0; animation-name: fadein; animation-duration: 1s; animation-fill-mode: forwards; } .nav__item:nth-child(1) { animation-delay: .2s; } .nav__item:nth-child(2) { animation-delay: .3s; } .nav__item:nth-child(3) { animation-delay: .4s; } .nav__item:nth-child(4) { animation-delay: .5s; } .nav__item:not(:last-child) { margin-bottom: 32px; } .nav__link { font-size: 24px; letter-spacing: 0.1em; text-decoration: none; color: #fff; } @keyframes fadein { 0% { opacity: 0; transform: translateY(24px); } 100% { opacity: 1; } }
3. Create a hamburger button to toggle the fullscreen navigation menu.
<div class="menu js-menu"> <span class="menu__line"></span> <span class="menu__line"></span> <span class="menu__line"></span> </div>
.menu { display: block; position: absolute; bottom: 16px; right: 16px; background-color: #222; height: 50px; width: 50px; border-radius: 50%; z-index: 20; box-shadow: 0px 3px 8px #333; cursor: pointer; } .menu__line { display: block; position: absolute; left: 50%; transform: translateX(-50%); width: 30px; height: 4px; background-color: #fff; border-radius: 13px; transition-duration: .4s; } .menu__line:nth-child(1) { top: 14px; } .menu__line:nth-child(2) { top: 23px; } .menu__line:nth-child(3) { bottom: 14px; } .menu.active { background-color: rgba(0, 0, 0, 0); box-shadow: none; } .menu.active .menu__line:nth-child(1) { transform: translate(-12px, 9px) rotate(-45deg); } .menu.active .menu__line:nth-child(2) { transition-duration: 0s; opacity: 0; } .menu.active .menu__line:nth-child(3) { transform: translate(-12px, -9px) rotate(45deg); }
4. Load the necessary jQuery JavaScript library in the document.
<script src="/path/to/cdn/jquery.slim.min.js"></script>
5. The main JavaScript (jquery script) to enable thhe morphing effect.
$('.js-menu').on('click', () => { $('.js-menu').toggleClass('active'); $('.js-nav').toggleClass('open'); $('.js-nav__list').toggleClass('show'); });
This awesome jQuery plugin is developed by TKS31. For more Advanced Usages, please check the demo page or visit the official website.