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

Fade-In Effect on Window Load
Javascript code for fade-in effect on window load
Disable AOS in Oxygen Builder Editor
CSS for disable AOS in Oxygen Builder
OpenStreetMap and Leaflet.js
Snippets code to use OpenStreetMap and Leaflet.js
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