我对我要建立的网站有特定的效果。正如您在this website中看到的,我希望屏幕在用户滚动后“捕捉到”下一部分,但在滚动事件触发后的(不是瞬间)之后只有。我不想使用像panelSnap这样的插件的原因是因为我
1:想要较小的代码和
2.希望网站在移动设备上查看时具有更多“即时捕捉”效果(尝试减少上面提到的网站中的浏览器大小)。我知道我理论上可以尝试结合使用两个插件(如panelsnap和scrollify),并在浏览器为特定宽度时适当地激活它们,但我不知道我是否想要这样做...... :(
因此所有这一切说,这里是代码:jQuery“捕捉”效果
var scrollTimeout = null;
var currentElem = 0;
var options = {
scrollSpeed: 1100,
selector: 'div.panels',
scrollDelay: 500,
};
$(document).ready(function() {
var $snapElems = $(options.selector);
console.log($($snapElems[currentElem]).offset().top);
function snap() {
if ($('html, body').scrollTop() >= $($snapElems[currentElem]).offset().top) {
if (currentElem < $snapElems.length-1) {
currentElem++;
}
}else{
if (currentElem > 0) {
currentElem = currentElem - 1;
}
}
$('html, body').animate({
scrollTop: $($snapElems[currentElem]).offset().top
}, options.scrollSpeed);
}
$(window).scroll(function() {
if ($(window).innerWidth() > 766) {
if (scrollTimeout) {clearTimeout(scrollTimeout);}
scrollTimeout = setTimeout(function(){snap()}, options.scrollDelay);
}else{
//I'll deal with this later
}
});
});
我的问题是,每次snap
函数被调用时,它会触发滚动事件,这将引发它变成一个循环,该窗口将不会停止之间滚动第一个和第二个元素,下面是可怜的,功能障碍的网站:https://tcfchurch.herokuapp.com/index.html感谢您的帮助