在看到页脚之前检测用户何时滚动到像素

Posted

技术标签:

【中文标题】在看到页脚之前检测用户何时滚动到像素【英文标题】:Detecting when user has scrolled to the pixel just before seeing the footer 【发布时间】:2014-08-15 10:57:31 【问题描述】:

我试图检测我的用户何时滚动到他看到页脚的第一个像素之前的点。

这是我尝试计算页脚之前位置的方法:

footerVisible = $(document).height() - $(window).height() - $('footer').height() - 1;
alert(footerVisible);

我将整个文档的高度减去视口高度和页脚高度。

这提醒我3695

现在我像这样记录滚动位置:

$window.scroll(function(e)
    console.log($window.scrollTop());

当一直滚动到文档底部(即:查看完整的页脚和文档末尾)时,控制台会显示我在位置 3211

我的逻辑显然有缺陷......

如何计算用户在看到页脚的第一个像素之前将处于的“scrollTop”位置。 任何人都可以提供一个在用户看到页脚之前引发警报的小提琴吗?

编辑 小提琴可用here

【问题讨论】:

您能否提供一下您所拥有的东西,以便有人可以正确地解释? @Seth 我上传了一个小提琴!同样,无论谁投反对票,我都想解释一下为什么这不是根据帮助中心定义的规则进行编程的问题?有了解释,我希望能改进这个问题,试图得到一个以前没有在这里问过的问题的答案,这可能对其他人将来也有用:) 【参考方案1】:

要查看“页脚的第一个像素”,滚动位置必须比页脚的高度低一个窗口高度。

var footerVisible = $(document).height() - $(window).height() - $('footer').height() - 1;

你的滚动功能应该是这样的:

$(window).scroll(function() 
    if( $(window).scrollTop() >= footerVisible ) 
        alert('Footer Visible');
    
);

【讨论】:

是的,但这不是我的问题,footerVisible 在我的浏览器中是3695,当我这样计算时('添加'你的 -1 我忘记了),但是当我一直滚动到底部我只在3211。我相信这不是计算页脚出现点的方法。 我上传了一个小提琴!

以上是关于在看到页脚之前检测用户何时滚动到像素的主要内容,如果未能解决你的问题,请参考以下文章

在手机上,检测用户何时滚动“过去”屏幕顶部

layoutSubviews vs frame didSet 检测视图的框架何时改变

如何在jquery中使滚动页脚淡入?

JQuery / JS:检测用户的滚动尝试,没有任何窗口溢出滚动到

检测用户何时使用 jQuery 滚动到 div 的底部

在启用分页的情况下检测滚动视图中的 y 偏移量何时发生变化