动画滚动jquery无法正常工作

时间:2014-11-06 04:51:51

标签: javascript jquery html scroll

所以我想我可能知道我的问题是什么 - 为了使我的网站响应,我使用height:auto并使用min-height:some-percentage设置高度。我知道这可能不是最佳实践,但它可以工作,并且比媒体查询耗时少得多。

因此,当我没有使用上述方法设置高度时,动画滚动的以下代码曾经工作过:

$('.animate_scroll').click(function(e){
    e.preventDefault(); //I tried without this line
    var loc_id = $($(this).attr('href')),
        loc_pos = loc_id.offset().top;
    console.log($(this).attr('href')); //outputs the right div id
    console.log(loc_pos); //outputs offset greater than 0
    $('html, body').animate({scrollTop : loc_pos}, 300)
})

任何人都知道我做错了什么?我之所以说我认为我对我的问题有所了解是因为上面的console.log语句记录了有效值。

更新: 在上面的代码中,我添加了几个console.log语句来获取偏移值。值不同,但即使我将loc_id设置为document.getElementById(this.getAttribute('id')).offsetTop,然后将其用作我的scrollTop值,它也不会滚动。

console.log($(this).attr('href')); //correct id
console.log(loc_pos); //outputs 794.546875
console.log(document.getElementById(this.getAttribute('id')).offsetTop); //944

1 个答案:

答案 0 :(得分:0)

试试这个demo

 $(".jumper").on("click", function( e ) {

        e.preventDefault();

        $("body, html").animate({ 
            scrollTop: $( $(this).attr('href') ).offset().top 
        }, 2000);

    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="pliip">pliip</div><a class="jumper" href="#ploop">Ploop</a><a id="#a_id">LINK TO MOVE</a>
<div style="height:1000px;background-color:#666">div</div>
<!-- Landing elements -->
<a class="jumper" href="#pliip">Pliip</a>
<div id="ploop">ploop</div>