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関数を呼び出しません。これを実現するには、おそらく、marginTopcssでjqueryanimate()関数を使用して、そのコードを書き直す必要があります。

唯一の問題は、コードがmousemoveで呼び出されることです。つまり、アニメーションがまだアクティブなときに、コードを簡単に再度呼び出すことができます。そのため、アニメーションが存在するかどうかを最初に確認し、その場合は中止するなど、回避策を考え出す必要があります。

于 2011-01-08T01:38:04.447 に答える