Modern Dropdown Mega Menu In jQuery And CSS3
| File Size: | 1.14 MB |
|---|---|
| Views Total: | 15761 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A responsive, stylish, mobile-friendly mega menu (multi-column dropdown menu) built using JavaScript (jQuery), CSS/CSS3, and nested HTML lists.
The mega menu pushes horizontal menu items to a multi-level hamburger toggle menu when the maximum screen width is reached (min-width: 992px).
How to use it:
1. Load the needed Font Awesome Iconic Font in the document.
<link rel="stylesheet" href="/path/to/fontawesome/all.css" />
2. Create a mega menu from nested HTML unordered lists as follows:
<div class="main-wrapper">
<nav class="navbar">
<div class="brand-and-icon">
<a href="index.html" class="navbar-brand">Mega Menu</a>
<button type="button" class="navbar-toggler">
<i class="fas fa-bars"></i>
</button>
</div>
<div class="navbar-collapse">
<ul class="navbar-nav">
<li>
<a href="#">home</a>
</li>
<li>
<a href="#" class="menu-link">
electronics
<span class="drop-icon">
<i class="fas fa-chevron-down"></i>
</span>
</a>
<div class="sub-menu">
<!-- item -->
<div class="sub-menu-item">
<h4>top categories</h4>
<ul>
<li><a href="#">cell phones & accessories</a></li>
<li><a href="#">smart tv</a></li>
<li><a href="#">computer & laptops</a></li>
<li><a href="#">digital cameras</a></li>
<li><a href="#">video games & accessories</a></li>
</ul>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<h4>other categories</h4>
<ul>
<li><a href="#">iphones</a></li>
<li><a href="#">speakers</a></li>
<li><a href="#">samsung devices</a></li>
<li><a href="#">audio & headphones</a></li>
<li><a href="#">vehicles electronics & GPS</a></li>
</ul>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<h2>all essential devices and tools for home</h2>
<button type="button" class="btn">shop here</button>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<img src="images/car.png" alt="product image">
</div>
<!-- end of item -->
</div>
</li>
<li>
<a href="#" class="menu-link">
fashion
<span class="drop-icon">
<i class="fas fa-chevron-down"></i>
</span>
</a>
<div class="sub-menu">
<!-- item -->
<div class="sub-menu-item">
<h4>top categories</h4>
<ul>
<li><a href="#">men's clothing</a></li>
<li><a href="#">women's clothing</a></li>
<li><a href="#">men's shoes</a></li>
<li><a href="#">women's shoes</a></li>
<li><a href="#">clothing deals</a></li>
</ul>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<h4>other categories</h4>
<ul>
<li><a href="#">fine jewelry</a></li>
<li><a href="#">fashion jewelry</a></li>
<li><a href="#">men's accessories</a></li>
<li><a href="#">handbags & bags</a></li>
<li><a href="#">kid's clothing</a></li>
</ul>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<h2>stylish and modern fashion clothing</h2>
<button type="button" class="btn">shop here</button>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<img src="images/cloth.png" alt="product image">
</div>
<!-- end of item -->
</div>
</li>
<li>
<a href="#" class="menu-link">
health & beauty
<span class="drop-icon">
<i class="fas fa-chevron-down"></i>
</span>
</a>
<div class="sub-menu">
<!-- item -->
<div class="sub-menu-item">
<h4>top categories</h4>
<ul>
<li><a href="#">makeup</a></li>
<li><a href="#">health care</a></li>
<li><a href="#">fragrance</a></li>
<li><a href="#">hair care & stylings</a></li>
<li><a href="#">manicure & pedicure</a></li>
</ul>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<h4>other categories</h4>
<ul>
<li><a href="#">skin care</a></li>
<li><a href="#">vitamins</a></li>
<li><a href="#">vision care</a></li>
<li><a href="#">oral care</a></li>
<li><a href="#">shaving & hair removal</a></li>
</ul>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<h2>the latest product is here</h2>
<button type="button" class="btn">shop here</button>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<img src="images/gymn.png" alt="product image">
</div>
<!-- end of item -->
</div>
</li>
<li>
<a href="#" class="menu-link">
sports
<span class="drop-icon">
<i class="fas fa-chevron-down"></i>
</span>
</a>
<div class="sub-menu">
<!-- item -->
<div class="sub-menu-item">
<h4>top categories</h4>
<ul>
<li><a href="#">cycling</a></li>
<li><a href="#">outdoor sports</a></li>
<li><a href="#">hunting</a></li>
<li><a href="#">fishing</a></li>
<li><a href="#">fitness & yoga</a></li>
</ul>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<h4>other categories</h4>
<ul>
<li><a href="#">tennis</a></li>
<li><a href="#">swimming</a></li>
<li><a href="#">winter sports</a></li>
<li><a href="#">fitness technology</a></li>
<li><a href="#">sports wear</a></li>
</ul>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<h2>gear up for sports & adventures</h2>
<button type="button" class="btn">shop here</button>
</div>
<!-- end of item -->
<!-- item -->
<div class="sub-menu-item">
<img src="images/helmet.png" alt="product image">
</div>
<!-- end of item -->
</div>
</li>
<li>
<a href="#">deals</a>
</li>
</ul>
</div>
</nav>
</div>
3. The primary CSS styles for the mega menu.
.main-wrapper img {
width: 100%;
display: block;
}
.main-wrapper a {
color: #000;
text-decoration: none;
}
.main-wrapper ul li {
list-style-type: none;
}
.navbar {
background: #fff;
padding: 0 1rem;
position: fixed;
top: 0;
left: 0;
width: 100%;
max-height: 100vh;
display: flex;
flex-direction: column;
z-index: 10;
}
.brand-and-icon {
display: flex;
justify-content: space-between;
padding: 1rem 0;
border-bottom: 1px solid #ddd;
}
.navbar-brand {
font-size: 1.8rem;
letter-spacing: 3px;
font-weight: 700;
}
.navbar-toggler {
display: block;
border: none;
background: transparent;
font-size: 1.8rem;
cursor: pointer;
padding: 0.2rem 0.5rem;
transition: all 0.4s ease;
border: 2px solid #000;
border-radius: 4px;
}
.navbar-toggler:hover {
opacity: 0.7;
}
.navbar-collapse {
overflow-y: scroll;
display: none;
}
.navbar-nav>li>a {
text-transform: uppercase;
font-size: 1.1rem;
font-weight: 700;
display: block;
padding: 0.6rem 0;
margin: 0.2rem 0;
border-bottom: 1px solid #ddd;
border-radius: 1px;
position: relative;
transition: all 0.4s ease;
}
.drop-icon {
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
}
.navbar-nav>li>a:hover {
opacity: 0.7;
}
.sub-menu h4 {
text-transform: capitalize;
font-size: 1rem;
padding: 0.5rem 0;
}
.sub-menu ul li {
text-transform: capitalize;
padding: 0.2rem 0;
margin: 0.2rem 0;
font-size: 0.95rem;
}
.sub-menu ul li a {
opacity: 0.8;
transition: all 0.5s ease;
}
.sub-menu ul li a:hover {
padding-left: 14px;
opacity: 0.9;
}
.sub-menu {
display: none;
}
.sub-menu-item {
padding-left: 1.2rem;
}
.sub-menu-item:nth-child(3) {
background: #ddd;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
padding-top: 2rem;
padding-bottom: 2rem;
}
.sub-menu-item:nth-child(3) h2 {
text-transform: capitalize;
margin: 1.5rem 0;
}
.sub-menu-item:nth-child(3) .btn {
border: 1px solid #000;
text-transform: uppercase;
font-size: 0.9rem;
padding: 0.6rem 1rem;
cursor: pointer;
background: #000;
color: #fff;
transition: all 0.5s ease;
}
.sub-menu-item:nth-child(3) .btn:hover {
background: transparent;
color: #000;
}
.sub-menu-item:nth-child(4) {
width: 50%;
margin: 0 auto;
padding: 2rem 0;
}
4. Converts the mega menu into a mobile navigation using CSS media queries.
@media screen and (min-width: 992px) {
.navbar {
flex-direction: row;
flex-wrap: wrap;
align-items: center;
border-bottom: 1px solid #ddd;
padding: 0 5rem;
position: relative;
}
.navbar-toggler {
display: none;
}
.brand-and-icon {
flex: 0 0 100px;
border-bottom: none;
padding: 0;
}
.navbar-collapse {
display: block!important;
overflow-y: hidden;
flex: 1 0 auto;
}
.navbar-nav {
display: flex;
align-items: center;
justify-content: center;
}
.navbar-nav>li>a {
border-bottom: none;
margin: 0 0.4rem;
padding: 1.7rem 1.8rem 1.7rem 0.8rem;
font-size: 0.8rem;
}
.sub-menu {
position: absolute;
left: 0;
width: 100%;
top: 100%;
background: #f8f8f8;
}
.navbar-nav>li:hover .sub-menu {
display: grid!important;
grid-template-columns: repeat(4, 1fr);
padding: 0 5rem;
}
.navbar-nav>li {
border-bottom: 2px solid transparent;
transition: border-bottom 0.4s ease;
}
.navbar-nav>li:hover {
border-bottom-color: #000;
}
.sub-menu-item {
padding-left: 0;
}
.sub-menu-item:nth-child(3) {
padding-left: 2rem;
padding-right: 2rem;
}
}
5. Load the latest JQuery JavaScript library in the document.
<script src="/path/to/cdn/jquery.min.js"></script>
6. The JavaScript (jQuery Script) to enable the mega menu.
$(document).ready(function () {
$('.navbar-toggler').click(function () {
$('.navbar-collapse').slideToggle(300);
});
smallScreenMenu();
let temp;
function resizeEnd() {
smallScreenMenu();
}
$(window).resize(function () {
clearTimeout(temp);
temp = setTimeout(resizeEnd, 100);
resetMenu();
});
});
This awesome jQuery plugin is developed by prabinmagar. For more Advanced Usages, please check the demo page or visit the official website.











