JSFiddle - React, Tailwind, and code Playground

by halirgb

HTML

<div class="navbar">
    <div class="sum-dumb-logo"></div>
    <ul class="menu menu-normal">
        <li><a href="">Lorem ipsum</a></li>
        <li><a href="">Lorem ipsum</a></li>
        <li><a href="">Lorem ipsum</a></li>
        <li><a href="">Lorem ipsum</a></li>
        <li><a href="">Lorem ipsum</a></li>
    </ul>
    <button class="open-corrected-menu">Show All</button>
</div>

CSS

ul.menu.menu-normal{
    list-style:none;
    padding:0;
    margin:0;
    float:right;
}
.open-corrected-menu{
    display:none;
}
ul.menu.menu-normal li{
    display:inline-block;
    background-color:red;
    padding:5px 7px;
    margin-right: -4px;
}
ul.menu.menu-normal li:last-child{
    margin-right:0;
}

.add-menu-item{
    position:fixed;
    bottom:20px;
    left:40px;
}
/*Menu modal for people hwo neen 1000mil item in the navbar*/
.mask {
    background-color:rgba(0, 0, 0, 0.5);
    position:fixed;
    height:100%;
    width:100%;
    top:0;
    left:0;
}
.menu-correction {
    position:fixed;
    z-index:9999;
    width:300px;
    left:50%;
    top:20px;
    bottom:20px;
    margin-left:-150px;
    background-color:#fff;
    overflow-x:auto;
    display:none;
}
ul.menu-correction {
    list-style:none;
    padding:0
}
ul.menu-correction li a {
    color:#111;
    text-transform:uppercase;
    font-family:arial;
    text-decoration:none;
    -webkit-transition: all 0.2s ease-in-out;
    -moz-transition: all 0.2s ease-in-out;
    -ms-transition: all 0.2s ease-in-out;
    -o-transition: all 0.2s ease-in-out;
    transition: all 0.2s ease-in-out;
    font-family:'Open Sans', sans-serif;
    display:block;
    padding:5px 0 5px 5px;
    margin-bottom:5px;
}
ul.menu-correction li a:hover {
    color:#fff;
    background-color:#555;
}

JavaScript

// Get menu width of menu
var getMenuWidth = function(){
    var menuWidth = 0;
    $(".menu li").each(function(){
       menuWidth += $(this).innerWidth();
    });
    return menuWidth;
}
var menuWidth = getMenuWidth()
// show/hide menu
var menuMagic = function(menuWidth){
    var windowWidth = $(window).innerWidth() - 20;
    if(menuWidth > windowWidth){
        $('.menu').removeClass('menu-normal');
        $('.menu').addClass('menu-correction').hide();
        $('.open-corrected-menu').show();
    }else{
        $('.menu').removeClass('menu-correction');
        $('.menu').addClass('menu-normal').show();
        $('.open-corrected-menu').hide();
    }
}
//menu popup
$('.open-corrected-menu').click(function () {
    $('body').css('overflow', 'hidden');
    $('body').append('<div class="mask" style="display:none"></div>');
    $('.mask').fadeIn(200, function () {
        $('.menu-correction').fadeIn().addClass('menu-visible');
    });
});
// hide if mask is clicked
$(document).on('click','.mask', function () {
    $('.menu-correction').fadeOut(function () {
        $(this).removeClass('menu-visible');
        $('body').css('overflow', 'auto');
        $('.mask').fadeOut(function(){
            $(this).remove();
        });
        menuMagic(menuWidth);
    });
});
// call on load
menuMagic(menuWidth);
// call on resize
$(window).resize(function(){
    // only call if menu is not visible
    if(!$('.menu-correction').hasClass('menu-visible')){
       menuMagic(menuWidth);
    }
});