Не могу получить с помощью функции jquery к absolute-pos div работает на iphone

Это функция, которую я использую, чтобы изменить положение #nav div в середине (по вертикали) окна.

function RepositionNav(){
            var windowHeight = $window.height(); //get the height of the window
            var navHeight = $('#nav').height() / 2;
            var windowCenter = (windowHeight / 2); 
            var newtop = windowCenter - navHeight;
            $('#nav').css({"top": newtop}); //set the new top position of the navigation list
    }

это где я перемещаюсь при прокрутке окна

$window.bind('scroll', function(){ //when the user is scrolling...

                RepositionNav();
});

Он работает нормально, но не в iphone... Я имею в виду, он исчезает, когда пользователи прокручивают вниз:? (остается в исходном положении, сверху)

Есть идеи почему?

большое спасибо

1 ответ

Кажется глупым, но убедитесь, что вы делаете + "px" на .css() назначение для top,

iPhone может по-разному обрабатывать высоту окна. Я бы вывел некоторую отладочную информацию, чтобы вы могли убедиться, что iPhone сообщает / получает правильные значения.

редактировать 19.05.11 9:35

Рассматривая исходный вопрос и ваши комментарии о том, что iPhone сообщает о 240px, независимо от того, сколько вы прокручиваете... имеет смысл, что он будет отображать 240px. Ваш navHeight является фиксированным значением, а ваш windowHeight является фиксированным значением, поэтому вы всегда получите одно и то же newtop значение, когда вы вычитаете их. Вы должны принять во внимание смещение прокрутки страницы - попробуйте использовать window.scrollYOffset Значение в сочетании с вашим уравнением, например, так:

var windowHeight = $window.height(),
    navHeight = $('#nav').height() / 2,
    windowCenter = (windowHeight / 2),
    newTop = (windowCenter - navHeight) + window.scrollYOffset;
    /* we use the scrollYOffset to normalize your newTop value to
       the current top of the viewPort, based on how far the user has
       scrolled down on the page.
    */

$('#nav').css({ top: newTop });
Другие вопросы по тегам