Expanding Toggle Menu With jQuery And CSS/CSS3
File Size: | 2.04 KB |
---|---|
Views Total: | 3880 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

A pretty cool toggle menu concept that expands the hamburger button into a horizontal (or vertical on mobile device) navigation menu when toggled. Built with jQuery, CSS/CSS3 and plain HTML.
How to use it:
1. Create the expanding toggle menu from a normal html list as these:
<ul> <li> <div id="menu-button"> <div class="bar"></div> <div class="bar"></div> <div class="bar"></div> </div> </li> <li>Home</li> <li>Plugins</li> <li>About Us</li> <li>Contact</li> </ul>
2. The primary CSS/CSS3 for the menu.
ul { width: 460px; height: 60px; background: #fff; border-radius: 5px; overflow: hidden; position: relative; } ul li { width: 100px; height: 60px; background: #fff; position: absolute; left: 0; -webkit-transform: translateX(-50%); transform: translateX(-50%); display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-shadow: 15px 0 30px -5px rgba(0, 0, 0, 0.2); box-shadow: 15px 0 30px -5px rgba(0, 0, 0, 0.2); cursor: pointer; font-family: 'Roboto', sans-serif; padding-left: 15px; color: #5B8CFF; opacity: 0; } ul li:first-child { padding-left: 0; z-index: 10; opacity: 1; width: 60px; -webkit-transform: translateX(0); transform: translateX(0); } ul li:after { content: ''; display: inline-block; position: absolute; width: 0; height: 0; border-style: solid; border-width: 30px 0 30px 15px; border-color: transparent transparent transparent #fff; right: -15px; top: 0; }
3. Style & animate the hamburger toggle button.
#menu-button .bar { width: 20px; height: 2px; background: #5B8CFF; -webkit-transition: 0.3s linear; transition: 0.3s linear; } #menu-button .bar:nth-child(2) { margin: 5px 0; } #menu-button.active .bar:first-child { -webkit-animation: barOne 0.4s ease-in-out forwards; animation: barOne 0.4s ease-in-out forwards; } @-webkit-keyframes barOne { 0% { -webkit-transform: none; transform: none; } 25% { -webkit-transform: translateY(7px); transform: translateY(7px); } 100% { -webkit-transform: translateY(7px) rotate(45deg); transform: translateY(7px) rotate(45deg); } } @keyframes barOne { 0% { -webkit-transform: none; transform: none; } 25% { -webkit-transform: translateY(7px); transform: translateY(7px); } 100% { -webkit-transform: translateY(7px) rotate(45deg); transform: translateY(7px) rotate(45deg); } } #menu-button.active .bar:nth-child(2) { -webkit-transform: scale(0); transform: scale(0); } #menu-button.active .bar:last-child { -webkit-animation: barTwo 0.4s ease-in-out forwards; animation: barTwo 0.4s ease-in-out forwards; } @-webkit-keyframes barTwo { 0% { -webkit-transform: none; transform: none; } 25% { -webkit-transform: translateY(-7px); transform: translateY(-7px); } 100% { -webkit-transform: translateY(-7px) rotate(-45deg); transform: translateY(-7px) rotate(-45deg); } } @keyframes barTwo { 0% { -webkit-transform: none; transform: none; } 25% { -webkit-transform: translateY(-7px); transform: translateY(-7px); } 100% { -webkit-transform: translateY(-7px) rotate(-45deg); transform: translateY(-7px) rotate(-45deg); } }
4. Rotate the navigation menu when the screen size is smaller than 468px:
@media screen and (max-width: 467px) { ul { -webkit-transform: rotate(90deg); transform: rotate(90deg); } }
5. Load the necessary jQuery JavaScript library at the end of the page.
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT" crossorigin="anonymous"> </script>
6. The main script to activate the toggle menu.
let menu = $('li:first-child'), menuButton = $('#menu-button'), Home = $('li:nth-child(2)'), Plugins = $('li:nth-child(3)'), about = $('li:nth-child(4)'), contact = $('li:nth-child(5)'); menu.on('click',() => { menuButton.toggleClass('active'); if(menuButton.hasClass('active')){ Home.animate({'left':'110px','opacity':'1','z-index':'8'},500); Plugins.animate({'left':'210px','opacity':'1','z-index':'6'},500); about.animate({'left':'310px','opacity':'1','z-index':'4'},500); contact.animate({'left':'410px','opacity':'1','z-index':'2'},500); } else { Home.animate({'left':'0','opacity':'0'},500); Plugins.animate({'left':'0','opacity':'0'},500); about.animate({'left':'0','opacity':'0'},500); contact.animate({'left':'0','opacity':'0'},500); } });
This awesome jQuery plugin is developed by prvnbist. For more Advanced Usages, please check the demo page or visit the official website.