0

这是我从互联网上获得的一个脚本,它运行良好,它在鼠标移动时自动滚动,在这种情况下是在一个 div 上scroll,但我似乎找不到可以找到速度的地方,或者可以让它慢一点!!我很混乱!!

$("#scroll").mousemove(function(e){
        /* The scrollable quote container */

        if(!this.hideDiv)
        {
            /* These variables are initialised only the firts time the function is run: */

            this.hideDiv = $(this);
            this.scrollDiv = $('#scroll');

            this.pos = this.hideDiv.offset();
            this.pos.top+=20;
            /* Adding a 20px offset, so that the scrolling begins 20px from the top */


            this.slideHeight = this.scrollDiv.height();

            this.height = this.hideDiv.height();
            this.height-=20;
            /* Adding a bottom offset */

            this.totScroll = this.slideHeight-this.height;
        }

        this.scrollDiv.css({
            /* Remember that this.scrollDiv is a jQuery object, as initilised above */

            marginTop:'-'+this.totScroll*(Math.max(e.pageY-this.pos.top,0)/this.height)+'px'
            /* Assigning a negative top margin according to the position of the mouse cursor, passed
               with e.pageY; It is relative to the page, so we substract the position of the scroll container */
        });

    });
4

1 回答 1

0

该代码似乎只是直接设置边距:

marginTop:'-'+this.totScroll*(Math.max(e.pageY-this.pos.top,0)/this.height)+'px'

也就是说,它不会调用任何可以轻松动画的滚动 jquery 函数。要实现这一点,您必须对该代码进行一些重写,可能使用带有 marginTop css 的 jquery animate() 函数。

唯一的问题是该代码是在 mousemove 上调用的,这意味着在动画仍处于活动状态时可以轻松地再次调用它。所以你将不得不在那里想出一些解决方法,比如可能首先检查是否存在动画并在这种情况下中止它。

于 2011-01-08T01:38:04.447 回答