2015-09-25 3 views
0

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

Трудно объяснить, пожалуйста найти ссылку изображение и jsfiddle link

scroll animate jquery

Здесь JS код:

$('#popUp').click(function(e){ 
    $('body').animate({scrollTop:0}, 400); 
    $('.overlay').slideDown(300, function(){ 
     $('.openPopup').fadeIn(300); 
    }); 
    e.preventDefault(); 
}); 
$('.close').click(function(e){ 
    $('.openPopup').fadeOut(300, function(){ 
     $('.overlay').slideUp(300); 
    }); 
    e.preventDefault(); 
}); 
+0

Если вы хотите, чтобы пользователь, где они были прежде, чем они щелкнули, почему прокрутки вверх? Просто убедитесь, что всплывающее окно находится в нужном месте, вместо этого – Popnoodles

+0

прокрутите вверх, потому что на моем сайте всплывающее окно больше экрана, и оно должно соответствовать 80-90% экрану. поэтому я прокручиваю тело вверх и всплывающее окно должно начинаться сверху. Я не могу дать позицию: исправлена; для всплывающего окна. потому что это нужно прокрутить. – locateganesh

ответ

2

Demo

.scrollTop() - это то, что вы хотите. Храните его открытым, затем используйте сохраненные данные при закрытии.

var scrolltop; 

$('#popUp').click(function(e){ 
    scrolltop = $(document).scrollTop(); // store it 
    $('body').animate({scrollTop:0}, 400); 
    $('.overlay').slideDown(300, function(){ 
     $('.openPopup').fadeIn(300); 
    }); 
    e.preventDefault(); 
}); 
$('.close').click(function(e){ 
    $('.openPopup').fadeOut(300, function(){ 
     $('.overlay').slideUp(300); 
    }); 
    //$(document).scrollTop(scrolltop); // use it 
    $('body').animate({scrollTop: scrolltop}, 400); // animate to scrolltop 
    e.preventDefault(); 
}); 
+0

Спасибо, он работает. Но может ли он снова оживать при прокрутке вниз? Я использую для этого код: var $ scroll = $ (document) .scrollTop ($ ('# popUp'). data ('scroll')); $ ('body'). Animate ({scrollTop: $ scroll}, 400); – locateganesh

+0

Зачем вам использовать этот код? '$ scroll', который вы определили, является функцией. Возможно, обновление поможет вам лучше понять, где это значение. – Popnoodles

+1

Спасибо, Забудь об этом. Теперь в вашей демонстрации она прокручивается с анимацией. Я просто сделал некоторые изменения здесь (http://jsfiddle.net/locateganesh/k9nL0s52/3/) – locateganesh

1

Вы можете попробовать этот путь. смотрите здесь http://jsfiddle.net/k9nL0s52/4/

$(document).ready(function(){ 

var track_position; // this is for tracking your scrolled position 

    $('#popUp').click(function(e){ 
    $('body').animate({scrollTop:0}, 400); 
    $('.overlay').slideDown(300, function(){ 
     $('.openPopup').fadeIn(300); 
    }); 
    e.preventDefault(); 
    track_position = $('body').scrollTop(); //get current postion 
}); 
$('.close').click(function(e){ 
    $('.openPopup').fadeOut(300, function(){ 
     $('.overlay').slideUp(300); 
    }); 
    e.preventDefault(); 
    $('body').scrollTop(track_position); // set previous position after close click 
}); 

}); 
+2

Итак, практически тот же ответ, что и то, что уже было опубликовано и принято 17 минут назад, за исключением того, что '$ ('body ') .scrollTop() 'не работает в IE – Popnoodles

+1

Какой смысл повторять этот ответ? –

+0

@Popnoodles На самом деле я был занят модификацией кода в скрипке и не видел, чтобы вы отвечали сэр. –