Ответы пользователя по тегу JavaScript
  • Как выполнить скрипт при определенном размере экрана?

    HelenStar
    @HelenStar
    Начинающий frontend
    Если кому интересно, решила все таким образом (это весь скрипт на работающее меню):

    $(window).bind('resize', function(){ 
        if ($(window).width() < 450) {
            $('.main-nav').css('display','none');
            $('body').append('<div class="overlay-3"></div>');
            $('.main-nav').addClass('fadeout'); 
            $('.overlay-3').addClass('fadeout');
            
        $('.mobile-nav-btn').on('click', function() {
            if ($('.main-nav').css("display") == "none") {
                $('.overlay-3').fadeIn(200);
                $('.main-nav').fadeIn(200);
            }    
        });
        
        $(('a.nav-link')).on('click touch', function() { 
            $('.overlay-3, .fadeout').fadeOut(); 
        }); 
        
        $('body').on('click', '.overlay-3', function(event) {
        event.preventDefault();
        $('.overlay-3, .main-nav').fadeOut(200);
        });  
    } 
    else { 
        if ($(window).width() > 450) { 
            $('.main-nav').css('display','block'); 
            $('.main-nav').removeClass('fadeout'); 
            $('.overlay-3').removeClass('fadeout');
            $('.overlay-3').remove();
            }
        }
    }).trigger('resize');


    Только тут объединила все, что связано с мобильным меню в условие только для разрешений < 450px.

    В < 450 $('.main-nav').css('display','none') в начале добавлен для того, чтобы меню не оставалось открытым, если пользователь вдруг повернул экран и в уже не мобильном меню перешел по ссылке (при повороте у меня открывается декстопная версия сайта).

    В > 450 $('.main-nav').css('display','block') аналогично добавлен, чтобы меню не исчезало, если до этого было закрыто через оверлей.

    В общем, не знаю, насколько все грамотно или правильно сделано, но главное, работает. :-)

    P.S. за подсказку с добавлением класса fadeout и .trigger('resize') спасибо Антону. :-)
    Ответ написан
    Комментировать