代码之家  ›  专栏  ›  技术社区  ›  unrelativity

是否在滚动时停止效果.scrollto()?

  •  1
  • unrelativity  · 技术社区  · 15 年前

    是的,基本上我有:

    Effect.ScrollTo("bottom", { duration: 5.0 });
    

    所以我想要的是在我想滚动的时候停止这个效果。

    有什么帮助吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Tyson    15 年前
    var scrollEffect = Effect.ScrollTo("bottom", { duration: 5.0 });
    
    ...
    
    scrollEffect.cancel();
    

    下面的代码非常适合我:

    <html>
    <head>
        <script src="js/prototype.js" type="text/javascript"></script>
        <script src="js/scriptaculous.js" type="text/javascript"></script>
    
        <style type="text/css" media="screen">
            body { font-size: 30px; }
            #destination { margin-top: 1400px; }
            #start { position: fixed; top: 10px; left: 20px;}
            #stop { position: fixed; top: 50px; left: 20px;}
        </style>
    
        <script type="text/javascript" charset="utf-8">
            function startEffect() {
                scrollEffect = Effect.ScrollTo("destination", { duration: 8.0 }); return false;
            }
    
            function stopEffect() {
                scrollEffect.cancel(); return false;
            }
        </script>
    </head>
    <body>
        <a id="start" href="#" onclick="return startEffect();">Start Effect</a>
        <a id="stop" href="#" onclick="return stopEffect();">Stop Effect</a>
        <p id="destination">Scroll Destination</p>
    </body>
    </html>
    
        2
  •  0
  •   unrelativity    15 年前

    我目前正在工作的是一个DIV,如下所示:

    <div id="pausepos" style="position:absolute;"></div>
    

    然后让javascript取消滚动并将其移回原始位置:

        fallingPosTempArr = $("thetop").viewportOffset();
        fallingPosTemp = -1*fallingPosTempArr[1];
    
        $("pausepos").setStyle({
            "top" : fallingPosTemp + 'px'
        });
    
        scrollEffect.cancel();
    
        setTimeout(function () { Effect.ScrollTo("pausepos", { duration: 0.0 }); }, 10);
    

    它可以工作,但在速度较慢的浏览器上,您可以看到页面如何跳回到顶部,然后又跳回来。