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

Это функция, которую я использую для изменения положения #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 Ответ

1 голос
/ 19 мая 2011

Кажется глупым, но убедитесь, что вы делаете + "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 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...