Mobile Accordion Menu With jQuery And CSS3
File Size: | 2.35 KB |
---|---|
Views Total: | 6671 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

A mobile-friendly hamburger toggle navigation built using jQuery/CSS that will slide in a multi-level, accordion-style expanding menu when toggled.
How to use it:
1. Create nested menu lists for the accordion navigation.
<nav class="nav" data-element="toggle-nav"> <ul class="nav__list"> <li class="nav__item"> <a class="nav__link" href="#">Menu item One</a> </li> <li class="nav__item"> <a class="nav__link nav__link--plus" data-behaviour="toggle-link-icon" href="#">Menu item Two</a> <ul class="nav__sub-list" data-behaviour="toggle-sub-menu"> <li class="nav__sub-item"> <a class="nav__link" href="#">Sub Menu item one</a> </li> <li class="nav__sub-item"> <a class="nav__link" href="#">Sub Menu item two</a> </li> <li class="nav__sub-item"> <a class="nav__link" href="#">Sub Menu item three</a> </li> </ul> </li> <li class="nav__item"> <a class="nav__link" href="#">Menu item Three</a> </li> <li class="nav__item"> <a class="nav__link" href="#">Menu item Four</a> </li> </ul> </nav>
2. Insert the menu toggle button into the webpage where needed.
<div class="menu-icon" data-behaviour="toggle-menu-icon"> <span class="menu-icon__bar"> </div>
3. Style the menu toggle button.
.menu-icon { height: 20px; width: 25px; position: relative; } .menu-icon:hover { cursor: pointer; } .menu-icon:hover .menu-icon__bar { opacity: 0.6; } .menu-icon__bar { position: absolute; top: 50%; height: 2px; width: 100%; background-color: #fff; display: block; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; } .menu-icon__bar::before, .menu-icon__bar::after { height: 2px; width: 100%; content: ""; background-color: #fff; display: block; position: absolute; -webkit-transition: -webkit-transform 0.5s ease; transition: -webkit-transform 0.5s ease; transition: transform 0.5s ease; transition: transform 0.5s ease, -webkit-transform 0.5s ease; } .menu-icon__bar::before { top: -10px; } .menu-icon__bar::after { bottom: -10px; } .menu-icon--open .menu-icon { position: relative; } .menu-icon--open .menu-icon__bar { background: transparent; } .menu-icon--open .menu-icon__bar::before, .menu-icon--open .menu-icon__bar::after { top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .menu-icon--open .menu-icon__bar::after { -webkit-transform: rotate(135deg); transform: rotate(135deg); } .menu-icon--open .menu-icon__bar::before { -webkit-transform: rotate(-135deg); transform: rotate(-135deg); }
4. Style the accordion menu.
.nav { padding: 20px; position: absolute; top: -1400px; background-color: #222; -webkit-transition: top 0.6s ease; transition: top 0.6s ease; width: 55%; } .nav--active { position: absolute; top: 60px; } .nav__list { padding-left: 0; list-style: none; } .nav__item { font-family: "Questrial", sans-serif; margin-bottom: 10px; text-align: left; } .nav__link { position: relative; color: #fff; text-decoration: none; } .nav__link--plus::after, .nav__link--minus::after { color: #fff; font-family: FontAwesome; font-size: 10px; position: absolute; top: 50%; right: -20px; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .nav__link--plus::after { content: ""; } .nav__link--minus { color: #C14500; } .nav__link--minus::after { content: ""; color: #C14500; } .nav__link:hover { opacity: 0.6; } .nav__sub-list { margin-top: 10px; margin-bottom: 10px; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; border-top: 1px solid rgba(255, 255, 255, 0.6); border-bottom: 1px solid rgba(255, 255, 255, 0.6); displaY: none; list-style: none; padding-left: 10px; } .nav__sub-list--active { display: block; } .nav__sub-item .nav__link { color: rgba(255, 255, 255, 0.6); } .nav__sub-item:not(:last-child) { padding-bottom: 10px; }
5. Insert the latest version of jQuery library into the document.
<script src="//code.jquery.com/jquery-3.2.1.min.js"></script>
6. The JavaScript to activate the accordion menu.
$(function() { function init() { $('[data-behaviour="toggle-menu-icon"]').on('click', toggleMenuIcon); $('[data-behaviour="toggle-link-icon"]').on('click', toggleSubMenu); }; function toggleMenuIcon() { $(this).toggleClass('menu-icon--open'); $('[data-element="toggle-nav"]').toggleClass('nav--active'); }; function toggleSubMenu() { $(this).toggleClass('nav__link--plus nav__link--minus'); $('[data-behaviour="toggle-sub-menu"]').slideToggle('nav__sub-list--active'); }; init() });
This awesome jQuery plugin is developed by JessMadeline. For more Advanced Usages, please check the demo page or visit the official website.