【发布时间】:2013-07-19 21:41:18
【问题描述】:
我正在尝试生成这种效果,即当您单击按钮时,页面将滚动到一个 div 并将浏览器的底部与 div 的底部对齐。我一直在搞乱 scrollTop() 和 offset() 但还没有让它工作。有什么想法吗?
【问题讨论】:
-
你目前有什么代码?
-
我已经放置了所有的 div 并设置了所有的 onclick 事件,我所需要的只是实际的滚动部分。
我正在尝试生成这种效果,即当您单击按钮时,页面将滚动到一个 div 并将浏览器的底部与 div 的底部对齐。我一直在搞乱 scrollTop() 和 offset() 但还没有让它工作。有什么想法吗?
【问题讨论】:
您可以使用以下代码
var wHeight = $(window).height(); // Height of view port
var eOffset = $('#elementID').offset().top; // Y-offset of element
var eHeight = $('#elementID').height(); // Height of element
$(window).scrollTop(eOffset - wHeight + eHeight); // See below for explanation
说明
.scrollTop() 设置为将元素置于窗口顶部的元素的 y 偏移量【讨论】:
(eOffset),它应该把它放在浏览器窗口的顶部。如果您使用(eOffset - wHeight),它应该刚好位于底部。如果你使用(eOffset - wHeight + eHeight),它应该与底部对齐。
$("#button").click(function() {
$('html, body').animate({
scrollTop: $("#elementtoScrollToID").offset().top
}, 2000);
});
取自http://www.abeautifulsite.net/blog/2010/01/smoothly-scroll-to-an-element-without-a-jquery-plugin/
【讨论】:
我会使用.scrollHeight:
$("#div1").animate({ scrollTop: $("#div1").scrollHeight}, 1000);
已编辑
那是因为你必须计算高度等
var scrollBottom = $(window).scrollTop() + $(window).height();
【讨论】: