Мне нужно сохранить смещение прокрутки элемента в синхронизации с другим (фактически на самом деле), и у меня возникают проблемы с этим во время инерциальной фазы «свернуть» прокрутки на Mobile Safari (iPad).Как синхронизировать смещение прокрутки двух элементов во время инерционной прокрутки
У меня есть несколько дивы с position:fixed; overflow:hidden
и мне нужно, чтобы держать их свиток смещение в синхронизации с одним окна Обычно я его код, как это (JQuery) (то есть весь свиток тела.):
var $win = $(window),
$div1 = $(...)
$win.scroll(function() {
$div1.scrollTop($win.scrollTop())
})
Но, тестируя интерфейс на iPad, я заметил, что div не обновлялся ни во время сенсорной фазы, когда вы перетаскиваете виртуальную страницу пальцем, так и во время инерциальной фазы, когда вы отпускаете страницу замедляется до остановки.
Я решил это для фазы перетаскивания, зарегистрировав обработчик для события touchmove
, а также scroll
.
Но я не могу найти способ решить проблему для инерциальной фазы. Div остается неподвижным (и идет медленно не синхронизируется с остальной частью страницы), пока инерционное движение не остановится, когда событие прокрутки окончательно уволится, и он переместится в положение.
Попробуйте прокрутить его на IPad, чтобы увидеть "инерционный scolling" проблемы. К сожалению, я не мог заставить его работать на jsFiddle, из-за странного поведения iPad с прокруткой iframe.
Если бы я мог просто запустить опрос на этом этапе, я мог бы сохранить видимость синхронизации между двумя элементами. Я пробовал с setTimeout
, setInterval
и requestAnimationFrame
, но ни один из них не срабатывает во время фазы инерциальной прокрутки. Кажется, что все Javascript останавливаются на этом этапе.
Вопросы:
- Есть ли прикосновение или свиток событие выстрелило во инерциальной фазе прокрутки?
- Есть ли какой-либо способ запустить обратный вызов Javascript на этом этапе?
- Есть ли способ синхронизировать смещение прокрутки двух элементов (либо X, либо Y, а не обоих) с использованием CSS или другой технологии, отличной от JS?
Было бы целесообразным добавить элементы div в качестве дочерних элементов в слой прокрутки? –
Что вы подразумеваете под словом «прокрутки»? Прокручиваемый элемент - это окно, то есть все тело. Фиксированные divs находятся внутри тела, да, но у них есть «позиция: фиксированная». – Tobia
Я в основном собираюсь получить информацию, которую я получаю здесь http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/CreatingBasicScrollViews/CreatingBasicScrollViews.html # // apple_ref/doc/uid/TP40008179-CH101-SW1 –