Не могу получить с помощью функции 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 });