На сегодняшний день эффекты при скроллинге набрали достаточно большую популярность (так называемый параллакс). Но, к сожалению, эти эффекты нейтивно не поддерживаются мобильными устройствами. Не так давно Mark Dalgleish предложил свой вариант решения этой проблемы:
Выбираем одну из тач-библиотек:
iScroll by Matteo Spinelli
Scrollability by Joe Hewitt
Zynga Scroller by Zynga
И подключаем Modernizr
Если ваш выбор пал на iScroll, вам следует поместить контент внутри блоков #wrapper и #scroller
Библиотеки
Выбираем одну из тач-библиотек:
iScroll by Matteo Spinelli
Scrollability by Joe Hewitt
Zynga Scroller by Zynga
И подключаем Modernizr
Обертка
Если ваш выбор пал на iScroll, вам следует поместить контент внутри блоков #wrapper и #scroller
<div id="wrapper">
<div id="scroller">
<ul>
<li>...</li>
</ul>
</div>
</div>
Определяем тач-устройство с помощью Modernizr и создаем для него новый экземпляр iScroll
var myScroller = Modernizr.touch ? new iScroll('scroller') : null;
Добавляем стили
#wrapper {
overflow: auto;
}
/* Переопределяем #wrapper для тач-устройств */
/* Класс head.touch создается Modernizer'ом в случаи если ваш браузер поддерживает тач-ивенты */
.touch #wrapper {
overflow: hidden;
}
Функция для нормализации позиции скрола
function getScroll(elem, iscroll) {
var x, y;
if (Modernizr.touch && iscroll) {
x = iscroll.x * -1;
y = iscroll.y * -1;
} else {
x = elem.scrollLeft;
y = elem.scrollTop;
}
return {x: x, y: y};
}
Финальный штрих
var myScroller = Modernizr.touch ? new iScroll('scroller') : null;
(function animationLoop(){
window.requestAnimationFrame(animationLoop);
var scroll = getScroll(window, myScroller);
// Теперь мы можем использовать кроссплатформенные координаты
scroll.x;
scroll.y;
})();
Почему для анимации следует использовать requestAnimationFrame