I'm making a multi-level hamburger menu, although whenever I click the menu icon, it doesn't show. I have a feeling it's to do with the 'right' attribute and how it's off screen but I can't think of a way to fix it. It's also an issue once the user clicks one of the options in the menu, the sub-menu never shows either (also to do with 'right').
jQuery:
var $menuTrigger = $('.js-menuToggle');
var $topNav = $('.js-topPushNav');
var $openLevel = $('.js-openLevel');
var $closeLevel = $('.js-closeLevel');
var $closeLevelTop = $('.js-closeLevelTop');
var $navLevel = $('.js-pushNavLevel');
function openPushNav() {
$topNav.addClass('isOpen');
$('body').addClass('pushNavIsOpen');
}
function closePushNav() {
$topNav.removeClass('isOpen');
$openLevel.siblings().removeClass('isOpen');
$('body').removeClass('pushNavIsOpen');
}
$menuTrigger.on('click touchstart', function(e) {
e.preventDefault();
if ($topNav.hasClass('isOpen')) {
closePushNav();
} else {
openPushNav();
}
});
$openLevel.on('click touchstart', function(){
$(this).next($navLevel).addClass('isOpen');
});
$closeLevel.on('click touchstart', function(){
$(this).closest($navLevel).removeClass('isOpen');
});
$closeLevelTop.on('click touchstart', function(){
closePushNav();
});
$('.screen').click(function() {
closePushNav();
});
CSS:
@media screen and (max-width: 600px) {
.pushNav {
width: 75%;
right: -75%;
}
}
@media screen and (min-width: 601px) {
.pushNav {
width: 350px;
right: -350px;
}
}
ul.pushNav {
padding: 0;
margin: 0;
list-style-type: none;
}
ul.pushNav.js-topPushNav {
}
.pushNav {
height: 100%;
position: fixed;
top: 0;
z-index: 100;
overflow: hidden;
background: #2e2f35;
-webkit-transition: ease-in-out 0.5s;
transition: ease-in-out 0.5s;
}
.pushNav hr {
border: 1px solid #555;
}
.pushNav, .pushNav a {
font-size: 1em;
font-family: helvetica, sens-serif;
font-weight: 100;
color: #000;
text-decoration: none;
}
.pushNavIsOpen {
overflow: auto;
height: 100%;
}
.closeLevel, .openLevel {
cursor: pointer;
}
.openLevel, .closeLevel, .pushNav a {
padding: 1em 0;
display: block;
text-indent: 20px;
-webkit-transition: background 0.4s ease-in-out;
transition: background 0.4s ease-in-out;
right: 0px;
}
.openLevel:hover, .closeLevel:hover, .pushNav a:hover {
background: #494a50;
right: 0px;
}
.hdg {
background-color: #1e1e24;
}
.closeLevel, closelevel > i {
font-size: 1em;
color: #fff;
}
.burger {
position: absolute;
top: 24px;
right: 48px;
}
.burger i {
font-size: 3em;
}
.screen {
position: fixed;
background: rgba(0, 0, 0, 0.7);
width: 100%;
height: 0;
top: 0;
bottom: 0;
right: 0;
opacity: 0;
-webkit-transition: opacity 0.5s ease-in-out;
transition: opacity 0.5s ease-in-out;
}
.pushNavIsOpen .screen {
height: 100%;
opacity: 1;
display: block;
}
.fa {
display: inline;
padding: 5px;
}
body {
background-size: 100% auto;
background-repeat: no-repeat;}
.wrapper {
max-width: 625px;
margin: 120px auto;
padding: 0 20px;
color: #000;
font-family: "Trebuchet MS", Helvetica, sans-serif;
font-weight: 100;
font-size: 1.1em;
line-height: 1.4em;
}
.wrapper a {
color: #ffff;
text-decoration: none;
}
.wrapper button {
background-color: #20c270;
margin: 50px auto;
display: block;
padding: 10px 40px;
border: none;
}
.wrapper button:hover {
background-color: #18a960;
}
.wrapper button a {
color: #000;
font-size: 2em;
}
HTML:
<link rel="stylesheet" href="//libapps-custom.library.curtin.edu.au/css/fontawesome.min.css?ver=5.8.11">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<nav>
<ul class="pushNav js-topPushNav">
<li class="closeLevel js-closeLevelTop hdg">
<i class="fa fa-close"></i>
Close
</li>
<li>
<a href="#">
<i class="fa fa-home"></i>
Home
</a>
</li>
<li><!-- Begin section 1 -->
<div class="openLevel js-openLevel">
Section 1
<i class="fa fa-chevron-right"></i>
</div>
<ul class="pushNav pushNav_level js-pushNavLevel">
<li class="closeLevel js-closeLevel hdg">
<i class="fa fa-chevron-left"></i>
Go Back
</li>
<li>
<div class="openLevel js-openLevel">
Section 1.1
<i class="fa fa-chevron-right"></i>
</div>
<ul class="pushNav pushNav_level js-pushNavLevel">
<li class="closeLevel js-closeLevel hdg">
<i class="fa fa-chevron-left"></i>
Go Back
</li>
<li><a href="#">Link to page five</a></li>
<li><a href="#">Link to page six</a></li>
<li><a href="#">Link to page seven</a></li>
<li><a href="#">Link to page eight</a></li>
<li><a href="#">Link to page nine</a></li>
</ul>
</li>
<li>
<div class="openLevel js-openLevel">
Secion 1.2
<i class="fa fa-chevron-right"></i>
</div>
<ul class="pushNav pushNav_level js-pushNavLevel">
<li class="closeLevel js-closeLevel hdg">
<i class="fa fa-chevron-left"></i>
Go Back
</li>
<li><a href="#">Link to page ten</a></li>
<li><a href="#">Link to page eleven</a></li>
<li><a href="#">Link to page twelve</a></li>
<li><a href="#">Link to page thirteen</a></li>
</ul>
</li>
<li><a href="#">Link to page three</a></li>
<li><a href="#">Link to page four</a></li>
</ul>
</li><!-- End section 1 -->
<li>
<div class="openLevel js-openLevel">
Section 2
<i class="fa fa-chevron-right"></i>
</div>
<ul class="pushNav pushNav_level js-pushNavLevel">
<li class="closeLevel js-closeLevel hdg">
<i class="fa fa-chevron-left"></i>
Go Back
</li>
<li><a href="#">Link to page fourteen</a></li>
<li><a href="#">Link to page fifteen</a></li>
<li><a href="#">Link to page sixteen</a></li>
<li><a href="#">Link to page seventeen</a></li>
<li><a href="#">Link to page eighteen</a></li>
<li><a href="#">Link to page nineteen</a></li>
</ul>
</li>
<hr/>
<li>
<a href="#">Link to page one</a>
</li>
<li>
<a href="#">Link to page two</a>
</li>
</ul>
</nav>
<div class="wrapper">
<div class="burger js-menuToggle">
<i class="fa fa-bars" style="color: #000"></i>
</div>
</div>
<span class="screen"></span>
https://codepen.io/adms2000/pen/LYGYwPa
Thanks!