【发布时间】:2016-09-21 18:37:37
【问题描述】:
我试图在用户滚动到各种 DOM 元素时触发操作(我需要它来响应各种屏幕尺寸)。我首先使用offset().top 获取各个元素的位置,然后使用scrollTop() 计算滚动的位置。它有点工作,但动作在 DOM 元素开始之后触发得太远了。我已删除所有填充和边距...
var hT = $('#bioAG').offset().top;
var hT2 = $('#bioTM').offset().top;
var hT3 = $('#contact').offset().top;
$(window).scroll(function () {
var ws = $(window).scrollTop()
if (ws > hT) {
$("#bioAG").addClass("fade-in");
} else if (ws > hT2){
$("#bioTM").addClass("fade-in");
} else if (ws > hT3) {
$("#contact").addClass("fade-in");
} else {console.log('none');};
}) `
【问题讨论】:
-
在逻辑上滚动(每隔一段时间)你应该重新计算你的变量......
-
我想我很难理解为什么如果不调整视口大小会出现这种情况。如果第一次调用页面时 DOM 元素已经存在,为什么它们的位置会改变?
-
原因:1:滚动页面,2:调整窗口大小,3:滚动和 JS 现在搞砸了(嗯......除非你的元素总是在固定的 NNpx 高度 - 我猜测的可能性较小。)
-
没错,当我查看它们的页面长度时,它们确实发生了一些变化。我在第一个 DOM 元素上仍然存在原始问题,但感谢您指出这一点,我相信这将是一个更进一步的问题。
标签: javascript jquery vertical-scrolling