为什么scrollTop滚动超过给定元素?

时间:2016-01-19 01:01:36

标签: javascript jquery html css css3

无论出于何种原因,使用element.offset().topelement.position().top作为scrollTop的值会迫使浏览器滚动到指定元素之外。

我已尝试在$(window).scrollTop()element.offset().top进行控制台记录,在发生任何事情之前,读数都符合预期:

  • $(window).scrollTop() == 0

  • element.offset().top == 999

然而,当动画卷轴完成时,读数并不完全像我期望的那样:

  • $(window).scrollTop() == 999

  • element.offset().top == 831 (意外,不应该是0?)

所以我想在某种程度上问题变成了:如果浏览器滚动200vh,为什么元素的偏移几乎不受影响?

(我在启动页面上使用视差,所以这可能是罪魁祸首?在滚动过程中调整上面元素的transform: translate(X,Y)是否会影响给定元素的偏移量?)

HTML

    <body>
        <div id="splash"></div>
        <div id="sect1">
            <div id="text">
            </div>
        </div>
        <div id="sect2"></div>
    </body>

CSS

    body {
        overflow: hidden;
    }
    #splash {
        height: 200vh;
        width: 100vw;
        position: relative;
    }
    #sect1 {
        height: 100vh;
        width: 100vw;
        position: relative;
    }
    #sect2 {
        height: 100vh;
        width: 100vw;
        position: relative;
    }
    #downbtn {
        width: 50px;
        position: fixed;
    }

的jQuery

    function scroll() {
            var downbtn = $('#downbtn');
            var sect1 = $('#sect1');
            $('html, body').animate({
                    'scrollTop' : sect1.offset().top
            });
    });
    $(document).ready(function(){scroll();});

0 个答案:

没有答案