【问题标题】:JavaScript scroll to div with animationJavaScript 滚动到带有动画的 div
【发布时间】:2013-10-21 15:22:35
【问题描述】:

我有一个 PhoneGap 应用程序,当它打开一个 HTML 页面时,我希望它滚动到特定的 <div> 元素。到目前为止,我已经能够使用 jQuery 使用这个脚本来做到这一点:

<script>
$(document).delegate('.ui-page', 'pageshow', function () {
     var offset = $(this).find('#timeindicatordiv').offset().top;
     setTimeout(function () {
        $.mobile.silentScroll(offset);
        }, 0);
     });
</script>

这只会让我直接跳转到看起来有点不稳定的&lt;div&gt;

有什么办法可以让这个动画流畅吗?

【问题讨论】:

标签: javascript jquery html cordova


【解决方案1】:

您可以执行以下操作:

var scrollToElement = function(el, ms){
    var speed = (ms) ? ms : 600;
    $('html,body').animate({
        scrollTop: $(el).offset().top
    }, speed);
}

// specify id of element and optional scroll speed as arguments
scrollToElement('#timeindicatordiv', 600);

jsfiddle/示例:http://jsfiddle.net/dtR34/4/

【讨论】:

  • 这很好用,接受它总是滚动到底部。如何控制它的滚动距离?
  • @LudwigKristoffersson 您将要滚动到的元素的scrollToElement 函数传递给id。在我给您的示例中,#timeindicatordiv 元素位于页面底部,因此它会滚动到该位置。
  • 我认为你之前的答案看起来更好:)
  • 我把它回滚了,并在小提琴中提供了一个例子!
【解决方案2】:

这样做:

$("html,body").animate({scrollTop: offset}, 600);

【讨论】:

    【解决方案3】:

    $('.click').click(function(l){
       // prevent default action
    
       l.preventDefault();
    
       scrollToElement( $(this).attr('href'), 2000 );
    });
    
    var scrollToElement = function(el, ms){
        var speed = (ms) ? ms : 2000;
        $('html,body').animate({
            scrollTop: $(el).offset().top
        }, speed);
    }
    div {
        margin-top:1000px;
    }
    div:last-child {
        padding-bottom:1000px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <a href="#link1" class="click">link 1</a><br />
    <a href="#link2" class="click">link 2</a><br />
    <a href="#link3" class="click">link 3</a><br />
    
    
    <div id="link1">Link 1</div>
    <div id="link2">Link 2</div>
    <div id="link3">Link 3</div>

    【讨论】:

    • 请考虑说明您的代码的作用。虽然代码可以解决问题,但仅代码的答案通常对更广泛的公众不是很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多