Прокрутите div до последнего div в mousedown - PullRequest
0 голосов
/ 11 января 2012

Еще один вопрос по iScroll 4 . Я установил демо в JSFiddle .

Я хочу прокрутить div на mousedown. Следует прокрутить до конца:

  • непрерывно;
  • без перерыва;
  • со статической скоростью;

Пока он не достигнет последнего div, или я не наберу mouseup в середине.

Возможно ли этого добиться?

Ответы [ 3 ]

0 голосов
/ 11 января 2012

Проверьте эту скрипку: http://jsfiddle.net/z2YWZ/2/

Есть еще одна проблема. Он не останавливается, когда достигает конца. iScroll использует CSS translate для прокрутки, и я не смог найти способ получить текущий перевод из него. В настоящее время ищу решение для этого.

UPDATE

В iScroll есть опция useTransform, с помощью которой мы можем попросить его не использовать translate, а вместо этого использовать CSS свойство left для прокрутки. Таким образом, мы легко сможем определить, был ли достигнут конец (в любом случае). Чтобы использовать, просто установите useTransform: false при запуске iScroll.

ОБНОВЛЕНИЕ 2

Проверьте эту скрипку: http://jsfiddle.net/z2YWZ/12/

0 голосов
/ 12 января 2012

Я изменил код @ techfoobar и сделал что-то вроде этого, который непрерывно прокручивается до конца в mousedown и перемещается на один делитель в один клик. Фрагмент кода:

        var scrolling=false;
        var scrollTimer=-1;
        $('#next').bind('mousedown',function () {
            scrolling = true;
            scrollTimer = setInterval(function () {
                scrollDivRight();
            }, 100);
            return false;
        });
        $('#next').bind('mouseup',function () {
            scrolling = false;
            clearInterval(scrollTimer);
            return false;
        });
        $('#next').bind('mouseout',function () { /*For smoother effect and also prevent if any previous delay (eg. 100ms)*/
            scrolling = false;
            clearInterval(scrollTimer);
            return false;
        });
        scrollDivRight:function(){
            if(!scrolling) return false;
            myScroll.scrollTo(177, 0, 400, true);       
        }

Пожалуйста, предложите, если есть что-то лучшее, чем это. Конечно, проблема, упомянутая @ techfoobar в его ответе, до сих пор остается нерешенной.

0 голосов
/ 11 января 2012

Можете ли вы проверить это решение: http://jsfiddle.net/ugeU3/3

HTML:

<div id="click">Element to click on</div>

ЯШ:

jQuery("#click").bind('mousedown', function(){
    intInterval=setInterval(function(){
            myScroll.scrollTo(25, 0, 800, true);
    },30);
});
jQuery("#click").bind('mouseup', function(){
    intInterval=window.clearInterval(intInterval);
});

Вы можете изменить значения времени для достижения ваших предпочтений в скорости. я надеюсь, что это поможет.

...