Javascript с плавной прокруткой iPad - PullRequest
4 голосов
/ 25 марта 2012

я использую этот код, прокрутить переполнение div (скрытый) в ipad, и работает ожидать, что это не гладко, есть ли способ, как сделать плавную прокрутку?

function initMobileScroll(ele) {
var mobileScrollArea = document.getElementById(ele);

mobileScrollArea.addEventListener('touchstart', function(event){
    touchstart (event);
});

mobileScrollArea.addEventListener('touchmove', function(event){
    touchmove (event);
});

// let’s set the starting point when someone first touches
function touchstart (e) {
    startY = e.touches[0].pageY;
    startX = e.touches[0].pageX;
}

// calls repeatedly while the user’s finger is moving
function touchmove(e) {
    var touches = e.touches[0];

    // override the touch event’s normal functionality
            e.preventDefault();

    // y-axis
    var touchMovedY = startY - touches.pageY;
    startY = touches.pageY; // reset startY for the next call
    mobileScrollArea.scrollTop = mobileScrollArea.scrollTop + touchMovedY;

    // x-axis
    var touchMovedX = startX - touches.pageX;
    startX = touches.pageX; // reset startX for the next call
    mobileScrollArea.scrollLeft = mobileScrollArea.scrollLeft + touchMovedX;
}   

}

код источника: http://www.flexmls.com/developers/2011/04/13/ipad-and-single-finger-scrolling-in-flexmls/

Ответы [ 4 ]

5 голосов
/ 11 мая 2014

добавить это к вашему css:

-webkit-overflow-scrolling: touch;

Совместимость

  • Safari: iOS 5

  • Браузер Android: 3,0

  • Браузер Blackberry: 6

  • Chrome для мобильных устройств

  • Firefox Mobile

  • IE Mobile: 9

  • Opera Mobile

пример: JSfiddle

ссылка: barrow.io - Прокрутка переполнения

2 голосов
/ 25 марта 2012

Взгляните на это: http://cubiq.org/iscroll-4

1 голос
/ 26 мая 2017

Похоже на то, что я пытался сделать .. Удачи

if (evt.type == "touchstart")
{
    tsStartY = evt.originalEvent.changedTouches[0].clientY;
}
if (evt.type == "touchend")
{
    var te = evt.originalEvent.changedTouches[0].clientY;
    var delta = tsStartY - te;

    if (tsStartY > te) {
        // going down
        this.transY += delta;

        if (this.transY > this.minY)
        {
            this.transY = this.minY;
        }

    }
    if (tsStartY < te)
    {
        // going up
        this.transY -= -delta;
        if (this.transY < this.maxY) {
            this.transY = this.maxY;
        }
    }


}
1 голос
/ 28 сентября 2012

Плавная прокрутка Div теперь поддерживает сенсорную прокрутку.Это бесплатно и работает так же, как вы описываете - прокручивает div внутри другого div со скрытым переполнением.

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