Menu Accordion

I found this snippet code to create menu accordion from CodePen, but I did slightly modification from original code to […]
Share:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

I found this snippet code to create menu accordion from CodePen, but I did slightly modification from original code to suitable my client needs.

<!-- mobile menu -->
<div class="mobilenav--wrap">
    <div class="mobilenav">
    <?php
    if(function_exists('wp_nav_menu')):
        wp_nav_menu( 
            array( 
            'menu' =>'primary_nav',
            'theme_location' => 'primary_nav', 
            'container'=>'', 
				'depth' => 2,
				'menu_id' => 'menu' ) 
		);
		endif;
		?>
	</div>
</div>
/* mobile menu container */
.mobilenav--wrap {
	padding: 0;
	width: 100%;
	top: 0;
	right: 0;
	position: static;
	-webkit-transition: all 0.3s ease;
	-moz-transition: all 0.3s ease;
	-ms-transition: all 0.3s ease;
	-o-transition: all 0.3s ease;
	transition: all 0.3s ease;
}

.mobilenav--wrap.show--mobilenav {
	right: 0;
}


/* mobile menu */

.mobilenav {
	width: 100%;
	height: 100%;
	overflow: scroll;
	padding: 0;
}

.mobilenav > ul {
	width: 100%;
	box-sizing: border-box;
	padding-inline-start:0;
}

.mobilenav ul li {
	position: relative;

	list-style:none;
	font-size: 22px;
}

.mobilenav ul li a {
	display: block;
	padding: 15px 0px;
	text-decoration: none;
	color: color(3);
}

.mobilenav ul li a:hover {
	color: color(1);
	transition:all .6s ease;
}

.mobilenav ul li:hover ul {
	display:block;
}

.mobilenav ul ul li {
	border-bottom: 0;
	position: relative;
	font-size: 80%;	
	padding:0!important;
}

.mobilenav ul ul {
	padding-left: 20px;
	background:none;
	padding:0 0 0 20px!important;
}

.mobilenav ul ul li a {
    padding: 5px 0 5px 20px;
}

a.menu-expand {
	padding: 0 !important;
	background: transparent !important;
	width: 44px;
	height: 44px;
	position: absolute; 
	top: 7px;
	right: 0;
	z-index: 100;
}


.mobilenav ul li.menu-item-has-children .plus1{
	content: '';
	position: absolute;
	right: 10px;
	top: 24px;
	width: 20px;
	height: 2px;
	display: block;
	background: color(1);
	transition: all 0.3s ease-in-out;
	transform: rotate(-180deg);
}

.mobilenav ul li.menu-item-has-children .plus2{
	content: '';
	position: absolute;
	right: 10px;
	top: 24px;
	width: 20px;
	height: 2px;
	display: block;
	background: color(1);
	transition: all 0.3s ease-in-out;
	transform: rotate(-270deg);
}
/*original*/
/*
.mobilenav ul li.menu-item-has-children > a.menu-expand.menu-clicked .plus1 {
	transform: rotate(0);
}

.mobilenav ul li.menu-item-has-children > a.menu-expand.menu-clicked .plus2{
	transform: rotate(0);
}
*/

.menu-clicked .plus2 {
	transform: rotate(0)!important;
}
//hide sub-menus
jQuery('.mobilenav ul ul').hide();

jQuery('.mobilenav ul.sub-menu').each(function() {
	if(jQuery(this).children().length){
		jQuery(this,'li:first').parent().append('<a class="menu-expand" href="#" style="font-size:26px;color:white;"><span class="plus1"></span><span class="plus2"></span></a>');
	}
});

jQuery('.mobilenav ul li.menu-item-has-children').on('click',function(e){
	if (jQuery(this).hasClass("menu-clicked")) {
		jQuery(this).removeClass("menu-clicked");
		jQuery(this).children('ul').slideUp(300, function(){});
	} else {
		jQuery(this).addClass("menu-clicked");
		jQuery(this).children('ul').slideDown(300, function(){});
	}
})

/*original*/
/*
jQuery('.mobilenav ul li.menu-item-has-children > a.menu-expand').on("click",function(e){
	//enable these two lines if you only have one sub-menu level - closes other menus
	jQuery (".menu-clicked").not(this).removeClass("menu-clicked");
	jQuery('ul.sub-menu').slideUp(300, function(){});
	e.preventDefault();
	if (jQuery(this).hasClass("menu-clicked")) {
		jQuery(this).removeClass("menu-clicked");
		jQuery(this).prev('ul').slideUp(300, function(){});
	} else {
		jQuery(this).addClass("menu-clicked");
		jQuery(this).prev('ul').slideDown(300, function(){});
	}
});
*/

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Article

OpenStreetMap and Leaflet.js
OpenStreetMap is a map of the world, created by people like you and free to use under an open license. […]
Video Code using ACF Video Field
Solution of Jumping Modal Popups
I get this code from my client and also my friend 😊
COMPLETE PACKAGE OF WEBSITE DESIGN & DEVELOPMENT
Digitalizer offers website design & development services for company profiles, online shops, event organizers, educational institutions or other fields. You don't need to think about domains, web hosting / servers, DNS, email, design, development, security and other technical issues. Just prepare your website content, we do the rest.
All website design & development packages include 1 year maintenance!
Free Consultation
Back to top
cross