In this article we’ll take a quick look at several common multilevel menu options and then I’ll show you how to create a “mega menu”.
10 Basic Multilevel Menu Options
Here are a few of the basic drop down menus available from around the web. Don’t let the basic design examples fool you, you can easily customize these with CSS to make them as pretty as your design.
[JS/CSS] Drop Down Tabs (5 styles) – Dynamic Drive
[CSS] A cross-browser drop-down cascading validating menu – CSSplay
[JS/CSS] Drop-Down Menus, Horizontal Style – A List Apart
[JS/CSS] Superfish jQuery menu plugin – Joel Birch
[JS/CSS] Sexy Drop Down Menu w/ jQuery & CSS – Noupe
[JS/CSS] Free CSS Drop-Down Menu Framework – Lwis.net
[JS/CSS] JavaScript Dropdown Menu with Multi Levels – Leigeber.com
[CSS] Create Vimeo-like top navigation – Janko at Warp Speed
[JS/CSS] Smooth Navigational Menu (v1.3) – Dynamic Drive
[JS/CSS] Designing the Digg Header: How To & Download – CSS-Tricks.com
6 Creative/Advanced Multilevel Menu Options
If you’re looking for a multilevel menu that’s a little less common to fit a more unique design then these are some great options. All of these use javascript and css.
Mif.Menu using Mootools – mifjs.net
A circular menu with sub menus – CSSplay
Fancy Sliding Menu For Mootools – Andrey Sellick
Sliding Jquery Menu – hv designs
jQuery (mb)Menu 2.6 – Matteo Bicocchi
Accordion Menu script (v1.7.1) – Dynamic Drive
Creating a Mega Menu
I’ve listed quite a few options for several different types of multilevel menus above so you’re bound to find something to fit your project’s needs. However, one type of menu that I really like and don’t see used all too often is the “mega menu”. Take a look at the example to see what I’m talking about.

I’ve put a quick example together of a “mega menu” with two versions. One using only CSS and one using jQuery to spice it up a tad. As you can see, it provides users with more information than just boring text links. There’s a lot of cool stuff you can do with this concept. A great real world example of this type of menu is at Gateway’s website shown below.

Building something like this isn’t as hard as you might think although it might take a little time to style things the way you’d like. Overall it provides better usability and gives visitors easy access to more information without needing to dig around.
The HTML
We’ll start with a basic HTML 4.01 Strict template, title and unordered list with links. I’ve given the ul an ID of “menu1″ because I plan on including more than one in the example. I’ve also given it a class of “cssonly” which we’ll use for the javascript additions later.
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <head> <title>Mega Menu Example</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <link href="styles.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="wrapper"> <h1>Mega Menu Example #1 (CSS Only)</h1> <ul class="mainMenu cssonly" id="menu1"> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> <li><a href="#">Link 4</a></li> <li><a href="#">Link 5</a></li> </ul><!-- end ul .mainMenu #menu1 --> </div><!-- end div #wrapper --> </body> </html>
Then we’ll add in the sub navigation unordered lists with the following format. I’ll add the same structure to Link 1, 3 and 5. You’ll notice the first list item is a title and we’ve included images and additional text in the sub navigation list items.
<li><a href="#">Link 1 »</a> <ul> <li class="title">This is the Link 1 title</li> <li> <a href="#"> <img src="http://themeforest.s3.amazonaws.com/95_menus/images/icons/firefox-bag.png" alt="Firefox Bag" /> <span>Link 1a</span> <span class="moreinfo">More info about list item and image could go here</span> </a> </li> <li> <a href="#"> <img src="http://themeforest.s3.amazonaws.com/95_menus/images/icons/fixit-bag.png" alt="Fix It Bag" /> <span>Link 1b</span> </a> </li> <li> <a href="#"> <img src="http://themeforest.s3.amazonaws.com/95_menus/images/icons/globe.png" alt="Globe & Bag" /> <span>Link 1c</span> <span class="moreinfo">More info about list item and image could go here</span> </a> </li> </ul> </li>
The CSS
First we’ll position and style the first level list and links.
/* Style the menu and position list items */ ul.mainMenu { position: relative; height: 35px; padding: 0 8px; background: #fff url(images/menubg.png) repeat-x; clear: both; } ul.mainMenu li { float: left; list-style: none; } /* Style and position links and images in second level list items */ ul.mainMenu li a { display: block; height: 19px; padding: 8px 12px; text-decoration: none; color: #666; } ul.mainMenu li a:hover { color: #222; background: url(images/menubg-hover.png) repeat-x; }
Then we’ll position and style the sub navigation lists. To trigger the second level list we’ll change the display property from “display:none” to “display:block” when the first level links are hovered over. It’s important to note that this will not work in IE6 because of IE6’s lack for pseudo selectors. However, once we add some javascript it will fix that.
/* When hovering over main list items, show second level lists */ /* This is only for #menu1 */ ul.cssonly li:hover ul { display: block; } /* Position and style second level lists and items */ ul.mainMenu ul { position: absolute; top: 35px; left: 8px; padding-top: 5px; background: #fdfdfd url(images/shadow.png) repeat-x; display: none; /* Hide until parent list item is hovered on */ } ul.mainMenu ul li { padding: 8px; border-right: dashed 1px #f4f4f4; } ul.mainMenu ul li:last-child { border: 0; } ul.mainMenu ul li.title { float: none; /* Remove parent float setting */ padding: 6px 10px; border: 0; /* Remove parent border setting */ border-bottom: dashed 1px #f4f4f4; font-size: 11px; font-weight: bold; } ul.mainMenu ul img { height: 64px; width: 64px; } ul.mainMenu ul span { display: block; } ul.mainMenu ul a { height: 80px; text-align: center; font-size: 12px; font-weight: bold; border: solid 1px #ebebeb; background: #fff; } ul.mainMenu ul a:hover { background: #f4f7fa; } ul.mainMenu ul a img { opacity: .7; border: 0; } ul.mainMenu ul a:hover img { opacity: 1; } /* When hovering over a list item link show the more info div */ ul.mainMenu ul a:hover span.moreinfo { display: block; } /* Position and style the more info div */ ul.mainMenu ul span.moreinfo { display: none; width: 275px; position: absolute; bottom: -25px; left: 12px; padding: 6px 10px; background: #fff; text-align: left; font-weight: normal; }
Lastly, I’ve added some CSS rounded corners so it looks better for those of us using Safari and Firefox. I also included a couple minor fixes for IE6.
/* Rounded corners */ ul.mainMenu { -webkit-border-radius: 6px; -moz-border-radius: 6px; } ul.mainMenu ul { -webkit-border-bottom-right-radius: 10px; -webkit-border-bottom-left-radius: 10px; -moz-border-radius-bottomright: 10px; -moz-border-radius-bottomleft: 10px; } div.wrapper, ul.mainMenu ul a { -webkit-border-radius: 10px; -moz-border-radius: 10px; } /* IE6 FIXES */ ul.mainMenu li, ul.mainMenu li a { _float:left; _display: inline; }
That’s all you need for the CSS only version but it’s a little boring so lets at some quick jQuery to at least give it a nice sliding effect.
The jQuery
First we’ll remove the “cssonly” class. The reason I’ve done it this way is so that if javascript is disabled then the “cssonly” class will remain in the HTML and the menu will continue to function.
Next we’ll select our menu (#menu2 is the second menu in the example files), find the sub navigation lists and slide them down when we hover over the parent list item. Once we hover out of the parent list item or sub navigation list then it slides back up. Pretty easy eh?
<script type="text/javascript"> $(function() { // If no JS CSS menu will still work $("#menu2").removeClass("cssonly"); // Find subnav menus and slide them down $("#menu2 li a").hover(function(){ $(this).parent().find("ul.subnav").slideDown(400); $(this).parent().hover(function() { }, function() { // On hovering out slide subnav menus back up $(this).parent().find("ul.subnav").slideUp(400); }) }); }); </script>
And there you have it. A quick and easy way to spruce up the regular, boring multilevel menus so commonly used. Keep in mind this is just short demonstration of what could be done. I’ve seen a few websites with more information included.

Conclusion
Hopefully this tutorial and the example menus listed above give you some great ideas for your website or your next project. I seem to hear a lot of people say “well it’s limited here” or “it doesn’t do this very well”. I want to remind everyone that tutorials like these are brief examples of what can be done, we can’t do everything for you. Ideas like these are very flexible and it’s up to all of you creative geniuses out there to take what you’ve learned and make it even better.
Instead of thinking “can’t”, think “can”. It’s just a matter of figuring out how. There’s a lot of creative stuff out there so I hope to see some of this stuff in more templates submitted to Theme Forest.
via themeforest
Found something missing in this post?
While compiling this stuff on this post, it’s possible that we miss some other great menus. Do not hesitate to share it with us in Comments so that we can add instantly.










































web
Thanks for the share
ML
Hello Wajid,
Are you currently available for freelance? Can you please contact me?
Thank You
Wajid Khan
Yes i am available for freelance plz contact me at info@themeflash.com
Meko6
Great mega menus! Is it possible to add another level (mouse over an item to reveal a second level etc)