如何用Zepto.js滚动div?

时间:2012-05-29 15:55:12

标签: scroll zepto

我有一个overflow:scroll的div,我现在想以编程方式滚动该div。 Zepto.js可以实现吗?

1 个答案:

答案 0 :(得分:5)

Zepto不直接提供API,但可以从较低级别的DOM访问。

var $el = $('#scrolling-el');
var el = $el[0]; /* Actual DOM element */

/* Scroll to bottom */
el.scrollTop = el.scrollHeight - $el.height();

/* Scroll to top */
el.scrollTop = 0;

动画滚动是使用setTimeout的过程。你可以写一个快速的Zepto插件。这是一个粗略的例子:

$.fn.scrollToBottom = function(duration) {
    var $el = this;
    var el  = $el[0];
    var startPosition = el.scrollTop;
    var delta = el.scrollHeight - $el.height() - startPosition;

    var startTime = Date.now();

    function scroll() {
        var fraction = Math.min(1, (Date.now() - startTime) / duration);

        el.scrollTop = delta * fraction + startPosition;

        if(fraction < 1) {
            setTimeout(scroll, 10);
        }
    }
    scroll();
};