I think it’s best to avoid using plug-ins when possible. It reduces bloat and “black-box” code.
The mobile “hamburger” menu is a staple of responsive user interface design. Users know that clicking on that three-lined icon will show a menu. It’s a modern solution to displaying long navigation lists on smaller screens.
Below is a simple rendition using basic web technology. I used this recently as part of a website that showcases the work of a graphic artist.

HTML:
Drop this code in your header file for the menu (list of links) itself.
<div class="mobile-menu"> <span class="close-mobile-menu"><i class="far fa-times-circle"></i></span> <ul> <li><a href="/biography">Biography</a></li> <li><a href="/education">Education & Awards</a></li> <li><a href="/reviews?order=asc">Reviews</a></li> <li><a href="/etchings">Etchings</a></li> <li><a href="/category/paintings/1960s/">Paintings</a></li> <li><a href="/mukfa-about">Mukfa</a></li> <li><a href="/category/drawings/human-comedy/">Drawings</a></li> <li><a href="/exhibitions-and-collections">Exhibitions & Collections</a></li> </ul> </div>
Next, add this to your existing navigation, or wherever you’d like the hamburger button to show.
<div class="mobile-hamburger mobile-only"><i class="fas fa-bars"></i></div>
I used FontAwesome to generate the hamburger icon itself (and the close icon). Alternatively, you can use an image file.

CSS:
This code sets the hamburger button to only show on mobile devices. Mobile devices are specified at 787px or less by a media query.
.mobile-hamburger{
font-size: 36px;
color: #005FAA;
float: right;
cursor: pointer;
margin-right: 16px;
margin-top: 5px;
}
.mobile-menu{
display: none;
width: 100%;
background: #DCC7AA;
position: fixed;
height: 100%;
right: 0;
top: 0;
z-index: 20;
}
.mobile-menu ul{
list-style-type: none;
font-size: 16px;
text-align: left;
padding: 25px;
margin: 50px 0px;
}
.mobile-menu ul li{
margin-top: 15px;
}
.close-mobile-menu{
position: absolute;
top: 5px;
right: 16px;
font-size: 36px;
cursor: pointer;
}
@media only screen and (min-width:787px) {
.mobile-only{display: none;}
}
JavaScript:
With jQuery:
(function ($, root, undefined) {
$(function () {
'use strict';
// DOM ready, take it away
$(".mobile-hamburger").click(function(){
$(".mobile-menu").show();
});
$(".close-mobile-menu").click(function(){
$(".mobile-menu").hide();
});
});
})(jQuery, this);
Or, plain vanilla JS:
document.addEventListener('click', function (event) {
if (!event.target.matches('.mobile-hamburger')){
return;
}
document.getElementsByClassName('mobile-menu')[0].style.display = 'block';
}, false);
document.addEventListener('click', function (event) {
if (!event.target.matches('.close-mobile-menu')){
return;
}
document.getElementsByClassName('mobile-menu')[0].style.display = 'none';
}, false);
By the way, this is the tool I’ve been using to encode the HTML I paste into my WordPress posts (that way, it doesn’t actually render on page): https://github.com/mathiasbynens/mothereff.in/tree/master/html-entities
