Как создать параллакс-скролл на устройстве iOS - PullRequest
7 голосов
/ 07 марта 2012

Сегодня я увидел самое удивительное приложение для ipad, которое, как я был уверен, было написано с использованием html5, css3 и javascript ... лучшая часть приложения заключалась в том, что они отлично создали свиток с параллаксом ... Мой вопрос ... как? ... Я не могу найти какую-либо документацию о возможности создания свитка с параллаксом на устройствах iOS ... если бы кто-то мог дать мне ссылку или любой совет о том, как сделать это, который был бы наиболее ценным ... кто-нибудь?... С наилучшими пожеланиями J

Ответы [ 9 ]

13 голосов
/ 28 августа 2012

Недавно мы выпустили сайт, который выполняет прокрутку параллакса на iPad.Здесь есть небольшое объяснение, и его видео используется здесь: http://www.aerian.com/portfolio/one-potato/one-potato-html5-website

и сам сайт, если у вас есть iPad для игры:

Для этого мы написали некоторый код библиотеки JavaScript, который мы ожидаем открыть в ближайшем будущем.

Основная идея - написать контейнер прокрутки, который принимает сенсорный ввод и отслеживает ваши позиции по x и y (если вам нужны два измерения) вашего контента.Чтобы сделать это возможным с помощью параллакса, мы нашли лучший способ - использовать делегирование контроллеру.Я не могу вспомнить точный синтаксис, который мы использовали, не глядя

container.on('touchmove', function(e) {
    //get our offset
    var offset = <some value>; //e.g. { x : 0, y : -1300 }
    var easing = 'ease-out';

    self.delegate.scrollViewDidScrollToOffsetWithAnimation(self, offset, easing);
});

Затем в контроллере, что-то вроде этого:

var scrollView = new ScrollView($('#container'));

var controller = {
    scrollViewDidScrollToOffsetWithAnimation : function(scrollView, offset, easing) {
        //here you need to respond to offset, by changing some css properties of your parallax elements:
        parallaxElement.css('transform', 'translate(-offset.x, -offset.y * 0.8)');
        anotherParallaxElement.css('transform', 'translate(-offset.x, -offset.y * 0.1)');
    }
}

scrollView.setDelegate(controller);

Этот шаблон делегата находится под сильным влиянием UIKit, как я чувствуюэто обеспечивает более чистый способ информирования разрозненных частей системы о событиях другого человека.Я считаю, что использование слишком большого количества отправлений событий становится трудно поддерживать, но это совсем другая история.

Надеюсь, это немного поможет.

5 голосов
/ 09 октября 2012

Этот сайт показывает довольно хороший пример того, как эффекты стиля параллакса могут работать на устройствах ввода-вывода https://victoriabeckham.landrover.com/INT

Они имитируют прокрутку в зависимости от типа ввода, который вы даете.Вы на самом деле не прокручиваете страницу, а затем анимируете различные свойства.Он читает события касания, колесо мыши или их собственную запеченную полосу прокрутки и видит, сколько вы хотите прокрутить.Все содержимое страницы находится в контейнере.Таким образом, когда вы делаете сенсорное событие, оно просто читает, сколько вы двигаетесь на странице.

Кроме того, они используют цикл анимации, чтобы заставить все двигаться.Они используют метод window.requestAnimationFrame, чтобы оптимизировать изменения на своей странице, чтобы она работала гладко на iPad и в браузере.Вот страница с описанием этого:

http://paulirish.com/2011/requestanimationframe-for-smart-animating/ Браузер может оптимизировать одновременную анимацию вместе в один цикл переформатирования и перерисовки, что приводит к более высокой точности воспроизведения.Например, анимации на основе JS синхронизируются с переходами CSS или SVG SMIL.Кроме того, если вы запускаете цикл анимации на невидимой вкладке, браузер не будет ее запускать, что означает меньшую загрузку ЦП, ГП и памяти, что приводит к значительному увеличению срока службы батареи.

Кроме того, они создали специальный ключевой кадр, который будет определять, как все анимируется на странице.Я пускаю слюни из-за этого.Жаль, что это не открытая структура.Вы можете установить, где эффект начинается, где он заканчивается, ослабление и т. Д. Только в объекте ключевого кадра, и их структура будет обрабатывать все остальное через цикл анимации.

{
    selector: '#outro2 > .content2',
    startAt: outroStart+500,
    endAt: outroStart+1000,
    onEndAnimate:function( anim ) {},
    keyframes: [
        { 
            position: 0,
            properties: {
                "margin-top": 650
            }

        },
        {
            position: 1,
            ease: TWEEN.Easing.Sinusoidal.EaseOut,
            properties: {
                "margin-top": 650
            }
        }
    ]
},

В целом, яПолагайте, что сочетание пользовательской прокрутки и пользовательского цикла анимации с использованием метода requestAnimationFrame выходит за рамки ограничения параллакса, обычно связываемого с устройствами iOS.

4 голосов
/ 16 января 2013

Я недавно проверил Skrollr: http://prinzhorn.github.com/skrollr/

Пример отлично работает на iOs и Desktop!

2 голосов
/ 23 октября 2012

Марк Далглиш, который разработал stellar.js , очень хорошо объяснил , как этого добиться с помощью iScroll.js для имитации прокрутки iOS (видео с YouTube).

1 голос
/ 15 января 2014

Проверьте этот сайт: http://www.shindiristudio.com/demo/?item=Portal_Wordpress

это может дать вам некоторое представление о том, как это делается.

1 голос
/ 13 ноября 2013

Я нашел на этом сайте статью о параллаксе, которая прекрасно работает в ios. Но, это только поддержка сенсорного устройства. Это будет замечательно, если кто-нибудь объединит, чтобы заставить это работать и на настольном компьютере и на устройстве ios. http://torontographic.wordpress.com/2012/08/11/so-you-want-parallax-scrolling-in-ios-ipad-and-ipod/

1 голос
/ 20 марта 2012

Я тоже собираюсь сделать это.Проверьте stellar.js Марк Далгейш.Это прекрасно работает в большинстве ситуаций.Если у кого-то есть какие-либо другие ссылки или информация, было бы здорово услышать.

http://markdalgleish.com/projects/stellar.js/demos/ios.html

Используется прокручиваемость.Я надеюсь заставить скроллараму работать на iPad каким-то образом, как это делает stellar.js.Ну, это мечта!

Надеюсь, что это поможет вашему поиску.

0 голосов
/ 13 февраля 2014

Один миллион квадратных футов культуры работает как шарм на Windows Phone, Windows с сенсорным экраном, стандартным рабочим столом с прокруткой, Android и iOS.

У них есть пользовательская версия этой библиотеки прокрутки параллакса

0 голосов
/ 26 июля 2012

на данный момент это невозможно на устройствах iOS. Устройства iOS останавливают манипуляции с DOM во время прокрутки, помещая их в очередь для применения после завершения прокрутки. так что в лучшем случае вы получите короткие анимации. не беспокойся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...