【问题标题】:scrollTop only measures from top of scrollbar, need entire pagescrollTop 仅从滚动条顶部测量,需要整个页面
【发布时间】:2014-01-07 03:23:44
【问题描述】:

我试图将用户在页面上滚动的百分比作为 var (see fiddle) 传递。 $(document).scrollTop() / $(document.height() * 100 非常适合从 0 开始——页面顶部——但是当你到达底部时,它只返回滚动条顶部的位置,而不是 100%。请参阅小提琴以了解我的意思。

有没有人知道如何在顶部获得 0,在底部获得 100?主要的是它必须即时计算:如果某人位于页面的 45.2667%,我希望传递该值,而不是仅在顶部或底部传递。

【问题讨论】:

  • 在计算 % 之前从页面高度减去窗口高度?然后你只需要检查大于页面的窗口 => 负高度 => 设置为你想要的任何 %。

标签: javascript jquery scroll height scrolltop


【解决方案1】:

当滚动到底部时,您希望获取从页面顶部到滚动条顶部的百分比。试试:

($(document).scrollTop() / ($(document).height() - $(window).height())) * 100

【讨论】:

    【解决方案2】:

    Sactor 是正确的,但它不适用于所有位置。

    如果你也想考虑页面的结尾,我认为你想计算“查看”而不是“滚动”的页面数量

    如果您考虑的是页面浏览量而不是滚动量,那么您可以使用以下方法:

    从逻辑上讲,当您打开页面时,您会查看该页面的一些内容。所以你总能得到,

    ( ( $(document).scrollTop() + $(window).height() ) / $(document).height() ) * 100
    

    其他:

    如果你想要单独滚动,那么使用

    var extreme = $(document).height() - $(window).height(),
    percent = 0;
    if( $(document).scrollTop() <  extreme )
       percent = $(document).scrollTop() / $(document.height() * 100;
    else
       percent = 100;
    

    【讨论】:

    • 我无法让您的公式按照我想要的方式工作(我正在使用的脚本在事件滚动上重绘画布 - 比仅仅更改 .var 稍微复杂一点)但是它确实在小提琴中起作用。 Sactor 在我正在使用的脚本中工作。不过,谢谢。
    猜你喜欢
    • 2014-08-11
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多