JSFiddle - React, Tailwind, and code Playground
CSS
.main-nav { display: none; }
.mobile-nav-icon {
display: inline-block;
position: relative;
z-index: 9999;
}
.main-nav {
float: none;
position: absolute;
z-index: 8888;
width: 100%;
height: 100vh;
margin: 0;
margin-left: -2%;
background-color: rgba(230, 126, 34, 0.92);
text-align: center;
padding-top: 20vh;
}
.main-nav li {
display: block;
margin-left: 0;
font-size: 110%;
}
.main-nav li a:link,
.main-nav li a:visited {
display: block;
border: 0;
padding: 10px 0;
font-size: 100%;
}
.sticky .main-nav { margin-top: 0; }
.sticky .main-nav li a:link,
.sticky .main-nav li a:visited {
padding: 10px 0;
color: #fff;
}
.sticky .mobile-nav-icon { margin-top: 10px; }
.sticky .mobile-nav-icon i { color: #555; }
.sticky .mobile-nav-icon i.ion-close-round { color: #fff; }
JavaScript
$('.js--nav-icon, .js--main-nav a, .logo-black').click(function(element){
var nav = $('.js--main-nav');
var icon = $('.js--nav-icon i');
//Gets the class name of the element that triggered the event
var clicked = element.target.className;
//Exists the function if the menu is closed AND the logo-black element (logo image) was clicked
if (icon.hasClass('ion-navicon-round') && clicked == 'logo-black')
return;
//Opens and closes the menu
if ($(window).width() < 768){
nav.slideToggle(200);
}
//Changes icon states of the menu button
if (icon.hasClass('ion-navicon-round')) {
icon.addClass('ion-close-round');
icon.removeClass('ion-navicon-round');
} else {
icon.addClass('ion-navicon-round');
icon.removeClass('ion-close-round');
}
});
$(window).resize(function(){
var nav = $('.js--main-nav');
var icon = $('.js--nav-icon i');
if ($(window).width() > 767){
nav.css("display", "block");
icon.addClass('ion-close-round');
icon.removeClass('ion-navicon-round');
} else {
nav.css("display", "none");
icon.addClass('ion-navicon-round');
icon.removeClass('ion-close-round');
}
});