无论出于何种原因,使用element.offset().top
或element.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)
是否会影响给定元素的偏移量?)
<body>
<div id="splash"></div>
<div id="sect1">
<div id="text">
</div>
</div>
<div id="sect2"></div>
</body>
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;
}
function scroll() {
var downbtn = $('#downbtn');
var sect1 = $('#sect1');
$('html, body').animate({
'scrollTop' : sect1.offset().top
});
});
$(document).ready(function(){scroll();});