Показать сообщение отдельно
  #1 (permalink)  
Старый 03.09.2011, 19:06
Аватар для LostSenSS
Интересующийся
Отправить личное сообщение для LostSenSS Посмотреть профиль Найти все сообщения от LostSenSS
 
Регистрация: 19.01.2011
Сообщений: 14

Обработка и использование значения сдвига горизонтального скролла
Добрый день!

Есть сайт с длинным горизонтальным скроллом. Задача стоит следующая: когда юзер немного проскроливает сайт, то сверху выезжает плашка. Когда возвращает скролл в начало - плашка обратно задвигается.

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

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 консоль).

Отчего так происходит?

Помогите разобраться, пожалуйста.
Ответить с цитированием