HelenStar
@HelenStar
Начинающий frontend

Как сделать исчезающее меню при клике на кнопку меню в случае с функцией resize?

Всем привет!

Есть следующая функция для меню:
$(window).bind('resize', function(){ 
    if ($(window).width() < 450) { 
        $('.header').removeClass('flex');
        $('body').append('<div class="overlay"></div>');
        $('.logo, .contacts, .nav').addClass('fadeout');
        $('.fadeout').css('display','none');
        $('.nav').css('z-index','9');
        
    $('.btn-nav').on('click', function() {
        if ($('.fadeout, .overlay').css("display") == "none") {
            $('.fadeout').fadeIn(200);
            $('.overlay').fadeIn(200);
            $('.btn-nav').css('background','url(img/btn-nav-active.png) top left no-repeat');
        }
        else {
                $('.overlay').fadeOut(200);
                $('.fadeout').fadeOut(200);
                $('.btn-nav').css('background','url(img/btn-nav.png) top left no-repeat');
            }
    });  
    
    $(('a.nav-link')).on('click touch', function() { 
        $('.overlay, .fadeout').fadeOut();
        $('.btn-nav').css('background','url(img/btn-nav.png) top left no-repeat'); 
    }); 
    
    $('body').on('click', '.overlay', function(event) {
    event.preventDefault();
        $('.overlay, .fadeout').fadeOut(200);
        $('.btn-nav').css('background','url(img/btn-nav.png) top left no-repeat');
    });  
} 
else { 
    if ($(window).width() > 450) {         
        $('.header').addClass('flex');
        $('.logo, .contacts').css('display','block'); 
        $('.nav').css('display','flex');
        $('.logo, .contacts, .nav').removeClass('fadeout');
        $('.overlay').remove();
        }
    }
}).trigger('resize');

Все отлично работает при первой загрузке страницы на смартфоне, то есть пока не был сделан ресайз окна (поворот экрана на смарфтоне или же включение режима адаптива в режиме разработчика).

Если убрать
"else {
         $('.overlay').fadeOut(200);
         $('.fadeout').fadeOut(200);
         $('.btn-nav').css('background', 'url(img/btn-nav.png) top left no-repeat');
}

то все хорошо работает, но меню, естественно, будет закрываться только при клике на фон и ссылки, а надо, чтобы еще закрывалось при клике на кнопку меню.

Помогите, пожалуйста, разобраться, что не так делаю.
На jsfiddle все кидать проблематично, вот ссылка на тестовый хост с сайтом: клик

Кстати, также интересно почему при ресайзе он создает мне сразу два div с оверлеем, хотя в скрипте добавляется он один раз.
  • Вопрос задан
  • 378 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы