Добрый день!
Есть сайт с длинным горизонтальным скроллом. Задача стоит следующая: когда юзер немного проскроливает сайт, то сверху выезжает плашка. Когда возвращает скролл в начало - плашка обратно задвигается.
Вначале была проблема с определением самого значения скролла, нашел вот эту универсальную(вроде бы) функцию:
function getPageScroll() {
var xScroll;
if (self.pageXOffset) {
xScroll = self.pageXOffset;
} else if (document.documentElement && document.documentElement.scrollLeft) {
xScroll = document.documentElement.scrollLeft;
} else if (document.body) {
xScroll = document.body.scrollLeft;
}
return xScroll
}
Отрабатывает она хорошо, координата вычисляется верно.
Теперь нужно проверить, достигли ли мы определенной позиции и если достигли предпринять соответствующие действия
Делаем это с помощью функций JQuery
$(window).scroll(function() {
myvar = getPageScroll();
if (myvar <= 650){
$("#popup").animate({top: -52}, 100);
}
if (myvar >= 750){
$("#popup").animate({top: 0}, 500);
}
});
И вот тут получаем очень странное поведение.
Первый раз функция вроде бы отрабатывает.
Наша плашка выезжает и если аккуратно крутануть колесиком назад сразу как она выехала - она задвигается. Если же прокрутить далеко вперед, то она может вообще не задвинуться назад. А может и задвинуться, но совсем не там где нужно. Полная анархия
При этом значение myvar - верное в каждом положении скролла (проверял через хромовскую js консоль).
Отчего так происходит?
Помогите разобраться, пожалуйста.