Getting Off Canvas Menu on Beaver Builder Theme

<

Off Canvas Menu

Do you want to add the off canvas menu on your site? This tutorial helps you. You need Beaver Builder Theme 1.6 or later version. See the steps at below:

Enable the Mobile Menu for Desktop

First enabling the Hamburger icon for desktop and all devices. Login to Dashboard and navigate to Appearance -> Customize page. Go to Nav Layout section (Header -> Nav layout) and select “Always” from Responsive Nav Breakpoint drop down list. Click on Save&Publish button and save the current settings.

Creating Off Canvas Menu JS file

Creates a new folder “js” inside the bb child theme folder. You can ignore it if it is already there. Creates a new JS file “off-canvas-menu.js” and put into the “js” folder. Here is the full code of this JS file

Off Canvas Menu JS file

(function($){
	$(function(){
		$('body').addClass('off-canvas-menu');
	
		var winHeight = $(window).height();
		$('.fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse').css({'min-height': winHeight})
			.prepend('' );


		$( '.fl-page-nav-collapse ul.navbar-nav > li > .sub-menu' ).before( 
			$( '', {
				'class' : 'sub-menu-toggle',
				'aria-expanded' : false,
				'aria-pressed' : false,
				'role' : 'button'
			} )
			.append( $( '', {
						'class' : 'screen-reader-text',
						text : menuL10n.sunMenu
					}) 
			)
		);

		$( 'button.sub-menu-toggle' ).on( 'click', function(){
			$(this).toggleClass('activated');
			$(this).prev().parent().toggleClass('fl-mobile-sub-menu-open');
		});

		$(window).resize(function(){
			var winHeight = $(window).height();
			$('.fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse').css({'min-height': winHeight});
			$('.fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse').removeClass('in').addClass('collapse');
		});

		$(window).scroll(function(){
			$('.fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse').removeClass('in').addClass('collapse');
		});
	});
})(jQuery);

Enqueue this JS file

Open the functions.php file and add this code at end of the file

Enqueue JS file

add_action( 'wp_enqueue_scripts', 'frame_enqueue_scripts', 1001 );
function frame_enqueue_scripts()
{
	wp_enqueue_script( 'oc-menu', FL_CHILD_THEME_URL . '/js/off-canvas-menu.js', array(), '1.6', true );
	$output = array(
		'subMenu'  => __( 'Menu', 'fl-automator' ),
	);
	wp_localize_script( 'oc-menu', 'menuL10n', $output );
}

Customize the Design

Adding some custom CSS code for professional look. Open the style.css file and drop this CSS there

CSS

/* off Canvas Menu
----------------------------------------------------------- */
body.off-canvas-menu {
	overflow-x: hidden;
}

body.off-canvas-menu .fl-page-nav-collapse::-webkit-scrollbar {
	width: 5px;
}

body.off-canvas-menu .fl-page-nav-collapse::-webkit-scrollbar-track {
	background: #ddd;
	border-radius: 5px;
}

body.off-canvas-menu .fl-page-nav-collapse::-webkit-scrollbar-thumb {
	border-radius: 8px;
	background: #bbb;
}

body.off-canvas-menu .fl-page-nav-collapse i.fa-close {
	background: #ebebeb;
	border-bottom: 1px solid #e6e6e6;
	color: #333;
	cursor: pointer;
	display: block;
	margin: -25px -25px 30px;
	padding: 20px;
	text-align: right;
}

body.off-canvas-menu .fl-page-nav-collapse i.fa-close:hover {
	color: #636363;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always {
	z-index: 10;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always.fl-page-nav-right .fl-page-nav .navbar-toggle,
body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always.fl-page-nav-left .fl-page-nav .navbar-toggle {
	top: 50%!important;
	margin-top: -17px;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always.fl-page-nav-right .fl-page-header-row .fl-page-header-logo,
body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always.fl-page-nav-left .fl-page-header-row .fl-page-header-logo {
	padding-bottom: 0;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse {
	background: #eee;
	display: block;
	height: 100%!important;
	overflow-x: hidden;
	overflow-y: auto!important;
	padding: 25px;
	position: fixed!important;
	top: 0px;
	width: 320px;
	z-index: 9999;
	-webkit-transition: all 0.5s ease-in-out;
	-moz-transition: all 0.5s ease-in-out;
	-ms-transition: all 0.5s ease-in-out;
	-o-transition: all 0.5s ease-in-out;
	transition: all 0.5s ease-in-out;

	right: 0;
	-webkit-transform: translate(100%, 0);
	-moz-transform: translate(100%, 0);
	-ms-transform: translate(100%, 0);
	-o-transform: translate(100%, 0);
	transform: translate(100%, 0);
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse ul.navbar-nav li {
	text-align: left;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse.in {
	-webkit-transform: translate(0, 0);
	-moz-transform: translate(0, 0);
	-ms-transform: translate(0, 0);
	-o-transform: translate(0, 0);
	transform: translate(0, 0);
}

@media (max-width: 480px) {
	body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse,
	body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-medium-mobile .fl-page-nav-collapse {
		width: 280px;
	}
}

/* Sub Menu Indicator */

.fl-submenu-indicator .fl-page-nav ul.navbar-nav > li.menu-item-has-children > a:after {
	display: none!important;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .nav > li > a {
	display: inline-block;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .sub-menu-toggle {
	background: transparent;
	border-width: 0;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	-ms-border-radius: 0;
	border-radius: 0;
	display: block;
	margin: 0 auto;
	float: right;
	overflow: hidden;
	padding: 10px 15px;
	position: absolute;
	right: 0;
	top: 3px;
	text-align: center;
	visibility: visible;
	z-index: 9999;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .sub-menu-toggle:hover,
body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .sub-menu-toggle:focus {
	border-width: 0;
	color: #428bca;
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .sub-menu-toggle:before {
	content: "f107";
	display: inline-block;
	font: normal 16px/1 'FontAwesome';
	text-rendering: auto;
	-webkit-transform: translate(0, 0);
	-ms-transform:     translate(0, 0);
	transform:         translate(0, 0);
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .sub-menu-toggle.activated:before {
	content: "f106"!important;
}

All setup are completed now. Refresh you home page and see the output.

Here is the LESS script of above CSS code. It is only for LESS developer
LESS

/* off Canvas Menu
----------------------------------------------------------- */

body.off-canvas-menu {
	overflow-x: hidden;
	.fl-page-nav-collapse {
		&::-webkit-scrollbar {
			width: 5px;
		}

		&::-webkit-scrollbar-track {
			background: #ddd;
			border-radius: 5px; 
		}

		&::-webkit-scrollbar-thumb {
			border-radius: 8px;
			background: #bbb; 
		}

		i.fa-close {
			background: #e6e6e6;
			border-bottom: 1px solid #ddd;
			color: #333;
			cursor: pointer;
			display: block;
			margin: -25px -25px 30px;
			padding: 20px;
			text-align: right;

			&:hover {
				color: #999;
			}
		}
	}
}

body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always {
	z-index: 10;

	&.fl-page-nav-right,
	&.fl-page-nav-left {
		.fl-page-nav .navbar-toggle {
			top: 50%!important;
			margin-top: -17px;
		}

		.fl-page-header-row .fl-page-header-logo {
			padding-bottom: 0;
		}
	}

	.fl-page-nav-collapse {
		background: #efefef;
		display: block;
		height: 100%!important;
		overflow-x: hidden;
		overflow-y: auto!important;
		padding: 25px;
		position: fixed!important;
		top: 0px;
		width: 320px;    
		z-index: 9999;

		-webkit-transition: all 0.5s ease-in-out;
		-moz-transition:    all 0.5s ease-in-out;
		-ms-transition:     all 0.5s ease-in-out;
		-o-transition:      all 0.5s ease-in-out;
		transition:         all 0.5s ease-in-out;

		right: 0;

		-webkit-transform:  translate(100%,0);
		-moz-transform:     translate(100%,0);
		-ms-transform:      translate(100%,0);
		-o-transform:       translate(100%,0);
		transform:          translate(100%,0);

		ul.navbar-nav li {
			text-align: left;
		}

		&.in {
			-webkit-transform:  translate(0,0);
			-moz-transform:     translate(0,0);
			-ms-transform:      translate(0,0);
			-o-transform:       translate(0,0);
			transform:          translate(0,0);
		}
	}

	.sub-menu-toggle {
		background: transparent;
		border-width: 0;
		-webkit-border-radius: 0;
		-moz-border-radius: 0;
		-ms-border-radius: 0;
		border-radius: 0;
		color: @frame-nav-link-color;
		display: block;
		margin: 0 auto;
		float: right;
		overflow: hidden;
		padding: 10px 15px;
		position: absolute;
		right: 0;
		top: 3px;
		text-align: center;
		visibility: visible;
		z-index: 9999;

		&:before {
			content: "f107";
			display: inline-block;
			font: normal 16px/1 'FontAwesome';
			text-rendering: auto;
			-webkit-transform: translate(0, 0);
			-ms-transform:     translate(0, 0);
			transform:         translate(0, 0);
		}

		&.activated:before {
			content: "f106"!important;
		}

		&:hover,
		&:focus {
			border-width: 0;
			color: @frame-nav-hover-color;
		}
	}
}

@media (max-width: 480px) {
	body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-always .fl-page-nav-collapse,
	body.off-canvas-menu .fl-page-nav-toggle-icon.fl-page-nav-toggle-visible-medium-mobile .fl-page-nav-collapse {
		width: 280px;
	}
}
Posted in