iOS Style Sliding Navigation with jQuery and CSS3
| File Size: | 35.5 KB |
|---|---|
| Views Total: | 3122 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A simple jQuery script that turns big nested Html lists into a responsive, CSS3 powered, multi-level sliding drill down navigation as you seen on iOS or Facebook.
See also:
- Responsive jQuery Mobile-Style Sliding Menu Plugin
- Facebook Like jQuery Responsive Sliding Navigation Menu - waSlideMenu
- iPod Style jQuery Sliding Drill Down Menu Plugin
- iPod Style Drill Down Menu Plugin with jQuery
How to use it:
1. Create the navigation header with a back link.
<div class="list-header-container"> <a href="" class="back-link"><</a> <h3>Navigation</h3> </div>
2. Create a multi-level drill down menu using nested Html lists.
<div class="list-body-container">
<ul id="list-0" class="list-0 active-list">
<li class="list-0-item"> <a href="#list-1" class="list-link"><span class="list-link-label">Lorem ipsum.</span><span class="right-arrow">></span></a>
<ul id="list-1" class="list hidden">
<li class="list-item"> <a href="#list-1-1" class="list-link"><span class="list-link-label">Lorem ipsum.</span><span class="right-arrow">></span></a>
<ul id="list-1-1" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Inventore, id.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Tempore, officia?</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Culpa, quos.</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-1-2" class="list-link"><span class="list-link-label">Recusandae, molestias.</span><span class="right-arrow">></span></a>
<ul id="list-1-2" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Cum, ab.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Eaque, pariatur!</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Hic, dolorum.</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-1-3" class="list-link"><span class="list-link-label">Quaerat, rem.</span><span class="right-arrow">></span></a>
<ul id="list-1-3" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Architecto, nisi.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Rem, impedit.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Facilis, temporibus!</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-1-4" class="list-link"><span class="list-link-label">Consequatur, nesciunt.</span><span class="right-arrow">></span></a>
<ul id="list-1-4" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Excepturi, odio.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Ut, ipsa.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Quod, aliquid.</span></a> </li>
</ul>
</li>
</ul>
</li>
<li class="list-0-item"> <a href="#list-2" class="list-link"><span class="list-link-label">Delectus, nemo!</span><span class="right-arrow">></span></a>
<ul id="list-2" class="list hidden">
<li class="list-item"> <a href="#list-2-1" class="list-link"><span class="list-link-label">Lorem ipsum.</span><span class="right-arrow">></span></a>
<ul id="list-2-1" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Non, accusantium!</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Itaque, adipisci!</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Nemo, eligendi.</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-2-2" class="list-link"><span class="list-link-label">Veniam, ab.</span><span class="right-arrow">></span></a>
<ul id="list-2-2" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Pariatur, quas!</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Fugit, soluta.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Beatae, doloribus.</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-2-3" class="list-link"><span class="list-link-label">Dolor, harum!</span><span class="right-arrow">></span></a>
<ul id="list-2-3" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Dignissimos, itaque.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Laborum, quas!</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Dolorem, unde.</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-2-4" class="list-link"><span class="list-link-label">Reprehenderit, aliquid.</span><span class="right-arrow">></span></a>
<ul id="list-2-4" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Vel, numquam.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Est, aspernatur.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Similique, delectus!</span></a> </li>
</ul>
</li>
</ul>
</li>
<li class="list-0-item"> <a href="#list-3" class="list-link"><span class="list-link-label">Commodi, officiis.</span><span class="right-arrow">></span></a>
<ul id="list-3" class="list hidden">
<li class="list-item"> <a href="#list-3-1" class="list-link"><span class="list-link-label">Lorem ipsum.</span><span class="right-arrow">></span></a>
<ul id="list-3-1" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Beatae, ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Ea, provident.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Quas, reiciendis!</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-3-2" class="list-link"><span class="list-link-label">Debitis, quasi.</span><span class="right-arrow">></span></a>
<ul id="list-3-2" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Dolores, blanditiis.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Saepe, alias.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Sed, esse.</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-3-3" class="list-link"><span class="list-link-label">Nesciunt, molestias!</span><span class="right-arrow">></span></a>
<ul id="list-3-3" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Corrupti, quidem.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Voluptatibus, fugiat!</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Sit, quos?</span></a> </li>
</ul>
</li>
<li class="list-item"> <a href="#list-3-4" class="list-link"><span class="list-link-label">Minima, obcaecati.</span><span class="right-arrow">></span></a>
<ul id="list-3-4" class="list hidden">
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Lorem ipsum.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Fugiat, porro!</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Harum, dolorem.</span></a> </li>
<li class="list-item"><a href="#" class="list-link"><span class="list-link-label">Culpa, corporis?</span></a> </li>
<li class="list-item"><a href="" class="list-link"><span class="list-link-label">Lorem ipsum dolor.</span></a> </li>
<li class="list-item"><a href="" class="list-link"><span class="list-link-label">Nam, nobis eaque.</span></a> </li>
<li class="list-item"><a href="" class="list-link"><span class="list-link-label">Maiores, veniam, aperiam.</span></a> </li>
<li class="list-item"><a href="" class="list-link"><span class="list-link-label">Officia, nesciunt, ea!</span></a> </li>
<li class="list-item"><a href="" class="list-link"><span class="list-link-label">Est sit, magnam.</span></a> </li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
3. The whole markup structure should be something like this:
<div class="list-wrapper">
<div class="list-container">
<div class="list-header-container">
<!-- Navigation Header -->
</div>
<div class="list-body-container">
<!-- Navigation Body -->
</div>
</div>
</div>
4. Style the navigation header in the CSS.
.list-header-container {
position: relative;
background: none;
background-color: #F7F7F9;
}
.list-header-container a.back-link {
display: inline-block;
position: absolute;
padding: 30px 20px;
vertical-align: middle;
text-decoration: none;
}
.list-header-container a.back-link:hover { color: #2eb5ef; }
.list-header-container h3 {
margin: 0;
border: 0 none;
padding: 30px 20px;
text-align: center;
font-weight: 400;
color: #000000;
}
5. The core CSS/CSS3 styles for the sliding drill down menu.
.list-body-container {
position: relative;
left: -15%;
overflow-x: hidden;
overflow-y: auto;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
height: 300px;
width: 115%;
}
.list-body-container ul {
-moz-transition: min-height 0 linear, -moz-transform 0.3s ease-out;
-o-transition: min-height 0 linear, -o-transform 0.3s ease-out;
-webkit-transition: min-height 0 linear, -webkit-transform 0.3s ease-out;
transition: min-height 0 linear, transform 0.3s ease-out;
-moz-transform: translateX(115%);
-ms-transform: translateX(115%);
-webkit-transform: translateX(115%);
transform: translateX(115%);
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
-moz-box-shadow: 0 0 32px 0 rgba(0, 0, 0, 0.1);
-webkit-box-shadow: 0 0 32px 0 rgba(0, 0, 0, 0.1);
box-shadow: 0 0 32px 0 rgba(0, 0, 0, 0.1);
display: block;
position: absolute;
list-style: none;
top: 0;
left: 0;
margin: 0;
border: 0 none;
padding: 0;
width: 100%;
min-height: 300px;
background-color: #FFFFFF;
}
.list-body-container ul.hidden { display: none; }
.list-body-container ul.active-list {
display: block;
-moz-transform: translateX(13%);
-ms-transform: translateX(13%);
-webkit-transform: translateX(13%);
transform: translateX(13%);
min-height: 100%;
}
.list-body-container ul.active-list.parent-list {
-moz-transform: translateX(0);
-ms-transform: translateX(0);
-webkit-transform: translateX(0);
transform: translateX(0);
}
.list-body-container ul li {
display: block;
margin: 0 0 0 2rem;
border-top: 1px solid #D2D2D2;
padding: 0;
}
.list-body-container ul li:first-child { border-top: 0 none; }
.list-body-container ul li a {
display: block;
padding: 1.2rem 6rem 1.2rem 1rem;
color: #000000;
text-decoration: none;
font-size: 1rem;
font-weight: 300;
}
.list-body-container ul li a .list-label { float: left; }
.list-body-container ul li a .right-arrow { float: right; }
.list-body-container ul li a:hover,
.list-body-container ul li a:focus,
.list-body-container ul li a.active-link { color: #2eb5ef; }
6. Load the latest version of jQuery library at the end of the document.
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
7. A little JavaScript to enable the sliding navigation.
if (!Array.prototype.last){
Array.prototype.last = function(){
return this[this.length - 1];
};
};
(function ($) {
$(function () {
var $wrapper = $(".list-wrapper");
var $back = $wrapper.find("a.back-link");
var $lists = $wrapper.find(".list-body-container ul")
var $links = $lists.find("a.list-link");
var $listPath = [$lists.filter(".active-list").eq(0)];
function onBackClick (e) {
e.preventDefault();
e.stopPropagation();
if ($listPath.length < 2) {
return false;
}
var $cl = $listPath.pop();
$cl.removeClass("active-list");
$listPath.last().removeClass("parent-list");
$cl.siblings(".list-link").removeClass("active-link");
window.setTimeout(function () {
$cl.addClass("hidden");
}, 310);
};
function onLinkClick (e) {
e.preventDefault();
e.stopPropagation();
var $link = $(this);
var $list = $($link.attr("href"));
if (!$list.length) {
return false;
}
$link.addClass("active-link");
$list.removeClass("hidden");
window.setTimeout(function () {
$list.addClass("active-list");
}, 10);
$listPath.last().addClass("parent-list");
$listPath.push($list);
};
// click on back button
$back.on("click", onBackClick);
// click on list links
$links.on("click", onLinkClick);
});
})(jQuery);
Change log:
v1.0.0 (2015-08-27)
- update.
This awesome jQuery plugin is developed by ifthenelse. For more Advanced Usages, please check the demo page or visit the official website.











