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