所以我想我可能知道我的问题是什么 - 为了使我的网站响应,我使用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
答案 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>