На сегодняшний день эффекты при скроллинге набрали достаточно большую популярность (так называемый параллакс). Но, к сожалению, эти эффекты нейтивно не поддерживаются мобильными устройствами. Не так давно 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