Полоса прокрутки не прокручивается после закрытия активного div

#javascript #jquery #html #css

#javascript #jquery ( jquery ) #HTML #css — код

Вопрос:

У меня есть фиксированная система меню, которая выдвигается и занимает 100% экрана при нажатии. Когда она активна на главной полосе прокрутки, у вас будет возможность прокручивать меню в активном div. Как только вы закроете меню, полоса прокрутки больше не позволит мне прокручивать весь сайт целиком, она будет прокручивать только длину div, из которого выходят слайды.

Как я могу исправить эту проблему? Мне нужна полоса прокрутки, чтобы управлять меню, когда оно активно, а затем иметь возможность прокручивать весь сайт, когда меню не активно.

Вот мой JS и полный код http://jsfiddle.net/8P9kh/8 /

 $(function(){
    window.status=0;
$('#menu').click(function(){
    if(window.status==0){
        $('#slidingMenu').stop().animate({left:'0px'},500); 
        window.status=1;
        $('body, html').css('overflow','hidden');
    }
    else{
        $('#slidingMenu').stop().animate({left:'-100%'},500);
        window.status=0;
        $('body, html').css('overflow-y','scroll');
    }
});
})

//Close menu when you click Footer

$('#more').click(function () {
var open = $('header').is('.open');
$('#dropFooter')['slide'   (open ? 'Up' : 'Down')](400);
$('header').animate({
    bottom: (open ? '-' : ' ')   '=200'
}, 400, function () {
    $('header').toggleClass('open');
});
});

$('#menu').click(function () {
if ($('').is('.open')) {
    $('')
        .removeClass('open')
        .animate({
        'bottom': "-=200"
    }, function () {
        var $footer = $('.activetoggle');

        if ($footer.length) 
            $footer
                .toggleClass('activetoggle footerButton')
                .text('Footer');
    });
    $('footer').slideUp(400);
}
});



$('.footerButton').click(function () {// Change wording once pressed
var $this = $(this);
$this.toggleClass('footerButton');
if ($this.hasClass('footerButton')) {
    $this.text('Footer');
} else {
    $this.text('Close');
}
$(this).toggleClass('activetoggle');
});

$(window).resize(function(){ //check when window resize
if($(window).width() < 780){ // check when the window width is less than 780 
if ($('header').is('.open')) { 
    $('header')
        .removeClass('open')
        .animate({
        'bottom': "-=200"                
    });
    $footer = $('.activetoggle');
    if ($footer.length) {
         $footer.toggleClass('activetoggle footerButton').text('Footer');
    }
    $('#dropFooter').slideToggle(400);
}
}

});
 

Ответ №1:

Прямо сейчас вы устанавливаете overflow для свойства CSS hidden значение, когда появляется меню, но затем устанавливаете overflow-x для свойства значение scroll , оставляя overflow свойство равным hidden . Сбросьте overflow свойство обратно в auto :

 $('body, html').css('overflow', 'auto');
 

Комментарии:

1. Я попробовал это, и он все еще делает то же самое @NobleMushtak

2. Это странно… Это сработало, когда я попробовал это. Извините! @пользователь3756781

3. да, я вижу, что это работает там, но на моем сайте это не работает. @NobleMushtak

4. Хм … это странно… Знаете ли вы, в чем разница между вашим сайтом и источником фрейма, созданным на JSFiddle? @user3756781

5. Понятия не имею, я просматриваю свой код. Я заметил, однако, когда я тестировал код сам по себе, он отображает дополнительную полосу прокрутки, оставляя основную полосу прокрутки неактивной @NobleMushtak