Responsive Site Navigation with jQuery and Checkbox Hack
File Size: | 2.13 KB |
---|---|
Views Total: | 7045 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

A fully responsive, mobile-friendly navigation menu built using HTML5, CSS3, the Checkbox Hack" tricks and a little jQuery magic. jQuery is used to detect the screen size and then add a smooth sliding animation to the responsive menu when toggled.
How to use it:
1. Create a site navigation from a nav list using checkbox + input label tricks.
<input type="checkbox" id="toggle"> <nav id="site-nav" class="site-nav"> <div class="container"> <label class="navBars" for="toggle"> <i class="fa fa-bars"></i> </label> <ul id="menu" class="menu"> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Blog</a></li> <li><a href="#">Contact</a></li> </ul> </div> </nav>
2. Style the desktop site navigation in your CSS.
.container { max-width: 960px; margin: 0 auto; padding: 10px; } .site-nav { background: #efefef; color: #1a1b18; max-height: 70px; position: relative; } .site-nav a { text-decoration: none; } .site-nav .menu { background: #efefef; box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.1); border-top: 1px solid #d9d9d9; display: none; list-style: none; margin: 0; padding: 0; text-align: center; position: absolute; top: 60px; right: 0; left: 0; } .site-nav .menu a { color: #292938; border-bottom: 1px solid #d9d9d9; font-weight: bold; display: block; padding: 15px; } .site-nav .menu a:hover { background: #292938; color: #efefef; } .site-nav .navBars { display: inline-block; font-size: 1.7em; line-height: 1.5em; float: right; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-user-select: none; } #toggle { visibility: hidden; opacity: 0; position: absolute; top: -99999px; } #toggle:checked ~ nav .menu { display: block; }
3. Style the mobile site navigation (screen size < 600px) in CSS media queries.
@media screen and (min-width: 600px) { .site-nav .navBars { display: none; } .site-nav .container { padding-top: 0; padding-bottom: 0; } .site-nav .logo { margin: 10px 0; } .site-nav .menu { display: block; box-shadow: none; border: none; float: right; position: static; } .site-nav .menu li { display: inline-block; } .site-nav .menu a { border: none; padding: 20px 10px; } }
4. Load the Font Awesome 4 in the header for menu toggle icon.
<link rel="stylesheet" href="font-awesome.min.css">
5. Load the necessary jQuery library at the end of the document.
<script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
6. The core JavaScript.
"use strict"; var myNav = { init: function () { this.cacheDOM(); this.browserWidth(); this.bindEvents(); }, cacheDOM: function () { this.navBars = $(".navBars"); this.toggle = $("#toggle"); this.navMenu = $("#menu"); }, browserWidth: function () { $(window).resize(this.bindEvents.bind(this)); }, bindEvents: function () { var width = window.innerWidth; if (width < 600) { this.navBars.click(this.animate.bind(this)); this.navMenu.hide(); this.toggle[0].checked = false; } else { this.resetNav(); } }, animate: function (e) { var checkbox = this.toggle[0]; if (!checkbox.checked) { this.navMenu.slideDown(); } else { this.navMenu.slideUp(); } }, resetNav: function () { this.navMenu.show(); } };
7. Initialize the side navigation and done.
myNav.init();
This awesome jQuery plugin is developed by ChynoDeluxe. For more Advanced Usages, please check the demo page or visit the official website.