最佳答案
我需要检索可滚动区域内 div 的可见高度。我认为自己使用 jQuery 是相当得体的,但这完全把我抛弃了。
假设我在一个黑色包装内有一个红色的 div:
在上图中,jQuery 函数将返回248,即 div 的可见部分。
如上图所示,一旦用户滚动到 div 顶部,它将报告296。
现在,一旦用户滚动过 div,它将再次报告248。
显然,我的数字不会像这个演示中的那样一致和清晰,否则我只能硬编码这些数字。
我有个想法:
看起来很简单,但我就是想不通。明天早上我再试一次,我想你们这些天才也许能帮上忙。
谢谢!
更新: 这是我自己想出来的,但是看起来下面的一个答案更加优雅,所以我将用它来代替。对于好奇的人,这是我想到的:
$(document).ready(function() {
var windowHeight = $(window).height();
var overviewHeight = $("#overview").height();
var overviewStaticTop = $("#overview").offset().top;
var overviewScrollTop = overviewStaticTop - $(window).scrollTop();
var overviewStaticBottom = overviewStaticTop + $("#overview").height();
var overviewScrollBottom = windowHeight - (overviewStaticBottom - $(window).scrollTop());
var visibleArea;
if ((overviewHeight + overviewScrollTop) < windowHeight) {
// alert("bottom is showing!");
visibleArea = windowHeight - overviewScrollBottom;
// alert(visibleArea);
} else {
if (overviewScrollTop < 0) {
// alert("is full height");
visibleArea = windowHeight;
// alert(visibleArea);
} else {
// alert("top is showing");
visibleArea = windowHeight - overviewScrollTop;
// alert(visibleArea);
}
}
});