Vertical Accordion Menu Plugin For jQuery - Nav Accordion
| File Size: | 7.89 KB |
|---|---|
| Views Total: | 18630 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
Nav Accordion is a lightweight, customizable jQuery plugin that lets you generate a vertical, multilevel, collapsible accordion menu from a nested unordered list for your site navigation.
How to use it:
1. Load the Font Awesome 4 icon font for expand / collapsible icons (OPTIAONAL).
<link rel="stylesheet" href="/path/to/font-awesome.min.css">
2. Create a multilevel accordion menu with a nested html list.
<nav class="mainNav">
<ul>
<li class="selected"><a href="#">Main menu 1</a>
<ul>
<li><a href="#">Sub Link 1-1</a></li>
<li><a href="#">Sub Link 1-2</a></li>
<li><a href="#">Sub Link 1-3</a>
<ul>
<li><a href="#">Sub Link 1-3-1</a></li>
<li><a href="#">Sub Link 1-3-2</a></li>
<li><a href="#">Sub Link 1-3-3</a></li>
</ul>
</li>
</ul>
</li>
<li><a>Main menu 2</a>
<ul>
<li><a href="#">Sub Link 2-1</a></li>
<li><a href="#">Sub Link 2-2</a></li>
<li><a href="#">Sub Link 2-3</a></li>
</ul>
</li>
<li><a href="#">Main menu 3</a></li>
</ul>
</nav>
3. Style the accordion menu using your own CSS.
.mainNav {
background: #46CFB0;
width: 25%;
}
/* First Level */
.mainNav ul {
margin: 0;
padding: 0;
list-style: none;
border-bottom: 1px solid #1ABC9C
}
.mainNav ul li { border-top: 1px solid #1ABC9C; }
.mainNav ul li a {
color: #FFFFFF;
display: block;
font-size: 1.1em;
line-height: normal;
padding: 12px 20px;
text-decoration: none;
}
.mainNav ul li a:hover {
background: #E95546;
text-decoration: none;
}
/* Second Level */
.mainNav ul ul { border-bottom: none }
.mainNav ul ul li {
border-top: 1px solid #46CFB0;
background: #34BC9D;
}
.mainNav ul ul li a {
color: #FFFFFF;
display: block;
font-size: 1em;
line-height: normal;
padding: 0.5em 1em 0.5em 2.5em;
}
.mainNav ul ul li a:hover { background: #E95546; }
/* Third Level */
.mainNav ul ul ul { border-top: 1px solid #46CFB0; }
.mainNav ul ul ul li { border: none; }
.mainNav ul ul ul li a {
padding-left: 3.5em;
padding-top: 0.25em;
padding-bottom: 0.25em;
}
/* Accordion Button */
ul li.has-subnav .accordion-btn {
color: #fff;
background: rgba(255,255,255, 0.15);
font-size: 16px;
}
4. Load jQuery library and the jQuery Nav Accordion plugin at the bottom of the webpage.
<script src="/path/to/jquery.min.js"></script> <script src="/path/to/navAccordion.min.js"></script>
5. Initialize the plugin and specify the html content for the expand / collapse buttons.
jQuery('.mainNav').navAccordion({
expandButtonText: '<i class="fa fa-plus"></i>',
collapseButtonText: '<i class="fa fa-minus"></i>'
});
6. Plugin's defaults.
jQuery('.mainNav').navAccordion({
// Text inside of expand button
expandButtonText : "+",
// Text inside of collapse button
collapseButtonText: "-",
// Expand the selected channel
selectedExpand: "true",
// Class that will be used to detect the currently selected channel
// This will check the "parentElement" for this class (the parent <li> by default)
selectedClass: "selected",
// Apply accordion to all levels
// Setting this to false will apply the accordion only to the first level
multipleLevels: "true",
// Width of accordion expand/collapse button as a percentage or pixels
buttonWidth: "20%",
// Position of button
buttonPosition: "right",
// Speed of slide animation
// "fast", "slow", or number in milliseconds such as 500
slideSpeed: "fast",
// Parent element type, class or ID
// You don't need to change this if you're using a ul > li > ul pattern
parentElement: "li",
// Child element type, class or ID
// You don't need to change this if you're using a ul > li > ul pattern
childElement: "ul",
// Setting to true will make any link with sub-nav behave as if it were set to header only, making the link inaccessible
// This option is useful if you are using the plugin for a non-navigation area
headersOnly: false,
// Setting to true to apply the accordion only to links that are set as "header only" (have no href)
headersOnlyCheck: false,
// Delay following the href of links until after the accordion the has expanded
delayLink: false,
// Time in milliseconds to delay before following href - will use "slideSpeed" by default if nothing else is set
delayAmount: null
});
Change log:
2016-03-26
- Fix for applying/remove active class.
2015-12-12
- Add active class to parentElement on expanded and add callback function.
2015-12-07
- Add delayed link mode.
This awesome jQuery plugin is developed by corycaywood. For more Advanced Usages, please check the demo page or visit the official website.











