Touch Swipeable Sidebar Menu with jQuery and CSS3
File Size: | 2.27 KB |
---|---|
Views Total: | 37174 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

A mobile friendly off-canvas side navigation built with jQuery and CSS that allows you to reveal and hide the side menu with touch swipe events using jQuery touchSwipe plugin.
How to use it:
1. Create a side menu for your web page.
<div id="sidebar"> <ul> <li><a href="#">Home</a></li> <li><a href="#">Blog</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </div>
2. Create a hamburger toggle which allows the visitor to open / close the side menu by clicking.
<a href="#" data-toggle=".container" id="sidebar-toggle"> <span class="bar"></span> <span class="bar"></span> <span class="bar"></span> </a>
3. Create an empty element for the swipe area.
<div class="swipe-area"></div>
4. Then wrap them with your main site content into a container. The full markup structure should be like this:
<div class="container"> <div id="sidebar"> <ul> <li><a href="#">Home</a></li> <li><a href="#">Blog</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </div> <div class="main-content"> <div class="swipe-area"></div> <a href="#" data-toggle=".container" id="sidebar-toggle"> <span class="bar"></span> <span class="bar"></span> <span class="bar"></span> </a> <div class="content"> ... Main Content ... </div> </div>
5. The core CSS / CSS3 styles.
body, html { height: 100%; margin: 0; overflow: hidden; font-family: helvetica; font-weight: 100; } .container { position: relative; height: 100%; width: 100%; left: 0; -webkit-transition: left 0.4s ease-in-out; -moz-transition: left 0.4s ease-in-out; -ms-transition: left 0.4s ease-in-out; -o-transition: left 0.4s ease-in-out; transition: left 0.4s ease-in-out; } .container.open-sidebar { left: 240px; } .swipe-area { position: absolute; width: 50px; left: 0; top: 0; height: 100%; background: #f3f3f3; z-index: 0; } #sidebar { background: #DF314D; position: absolute; width: 240px; height: 100%; left: -240px; box-sizing: border-box; -moz-box-sizing: border-box; } #sidebar ul { margin: 0; padding: 0; list-style: none; } #sidebar ul li { margin: 0; } #sidebar ul li a { padding: 15px 20px; font-size: 16px; font-weight: 100; color: white; text-decoration: none; display: block; border-bottom: 1px solid #C9223D; -webkit-transition: background 0.3s ease-in-out; -moz-transition: background 0.3s ease-in-out; -ms-transition: background 0.3s ease-in-out; -o-transition: background 0.3s ease-in-out; transition: background 0.3s ease-in-out; } #sidebar ul li:hover a { background: #C9223D; } .main-content { width: 100%; height: 100%; padding: 10px; box-sizing: border-box; -moz-box-sizing: border-box; position: relative; } .main-content .content { box-sizing: border-box; -moz-box-sizing: border-box; padding-left: 60px; width: 100%; } .main-content .content h1 { font-weight: 100; } .main-content .content p { width: 100%; line-height: 160%; } .main-content #sidebar-toggle { background: #DF314D; border-radius: 3px; display: block; position: relative; padding: 10px 7px; float: left; } .main-content #sidebar-toggle .bar { display: block; width: 18px; margin-bottom: 3px; height: 2px; background-color: #fff; border-radius: 1px; } .main-content #sidebar-toggle .bar:last-child { margin-bottom: 0; }
6. Load the necessary jQuery library and jQuery touchSwipe plugin in the web page.
<script src="jquery-2.1.4.min.js"></script> <script src="jquery.touchSwipe.min.js"></script>
7. Enable the swipeable side menu.
$(window).load(function(){ $("[data-toggle]").click(function() { var toggle_el = $(this).data("toggle"); $(toggle_el).toggleClass("open-sidebar"); }); $(".swipe-area").swipe({ swipeStatus:function(event, phase, direction, distance, duration, fingers) { if (phase=="move" && direction =="right") { $(".container").addClass("open-sidebar"); return false; } if (phase=="move" && direction =="left") { $(".container").removeClass("open-sidebar"); return false; } } }); });
This awesome jQuery plugin is developed by ElenaDroueva. For more Advanced Usages, please check the demo page or visit the official website.