Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滚动时在垂直全高div之间切换动画_Javascript_Scrolltop - Fatal编程技术网

Javascript 滚动时在垂直全高div之间切换动画

Javascript 滚动时在垂直全高div之间切换动画,javascript,scrolltop,Javascript,Scrolltop,我在一页中有三个div,每个div的高度为100vh。所以我想让它们之间自动切换,这将被激活时,用户滚动(向上或向下)。我已经编写了scrollTop()函数的条件 例如: if($("#first").scrollTop() > 10){ /*go to next div automatically*/ } 它对第一个div非常有效,但不可能再次滚动到top,因为第一个条件始终为true。我不知道。请帮帮我。这是一个小的代码片段,可以帮助您完成所要做的事情。基本上,这种功能可以有不同的

我在一页中有三个div,每个div的高度为100vh。所以我想让它们之间自动切换,这将被激活时,用户滚动(向上或向下)。我已经编写了scrollTop()函数的条件

例如:

if($("#first").scrollTop() > 10){ /*go to next div automatically*/ }

它对第一个div非常有效,但不可能再次滚动到top,因为第一个条件始终为true。我不知道。请帮帮我。

这是一个小的代码片段,可以帮助您完成所要做的事情。基本上,这种功能可以有不同的实现。试着阅读我在代码中的注释,处理代码片段,理解逻辑并使其更好。如果你有任何问题,请告诉我

$(文档).ready(函数(){
/*定义一些辅助变量*/
变量
/*主体jQuery包装器*/
body=$('html,body'),
/*窗口jQuery包装器*/
win=$(窗口),
/*divs jQuery包装器*/
divs=$('.view'),
/*divs长度,我们将使用它来确定是否在最后/第一个div上*/
divsLen=divs.length-1,
/*最后一个滚动位置,它将帮助我们确定哪个是滚动方向*/
lastScroll=0,
/*当前显示div的索引*/
divIndex=0,
/*用于确定滚动动画是否处于活动状态的标志*/
滚动=假;
/*施展魔法*/
win.on(‘卷轴’,_handleScroll);
函数_handleScroll(e){
/*如果当前运行的动画未完成,则不执行任何操作*/
如果(滚动){
返回false;
}
滚动=真;
/*确定滚动方向和要滚动到的div*/
if(win.scrollTop()>lastcoll){
/*向下滚动*/
if(divIndex0){
/*递减divIndex,这样我们就可以滚动到上一个div*/
divIndex--;
}否则{
/*如果我们在第一个元素上,则返回以防止闪烁动画*/
滚动=假;
返回false;
}
}
/*处理动画*/
body.stop().设置动画({
scrollTop:divs.eq(divIndex.offset().top
},500,函数(){
/*在设置scrolling=false之前使用一个小的超时,否则会立即触发scroll事件,代码无法正常工作*/
setTimeout(函数(){
/*重置滚动标志*/
滚动=假;
/*保存上次滚动位置*/
lastcroll=win.scrollTop();
}, 50);
});
}
});
*{margin:0;padding:0;}
.视图{高度:100vh;显示:柔性;对齐项目:中心;对齐内容:中心;}
.view span{颜色:白色;字体大小:25px;字体系列:arial;字体大小:粗体;}
#第一{背景色:蓝色;}
#第二{背景色:黑色;}
#第三{背景色:绿色;}
#第四{背景色:红色;}

弗斯特
第二
第三
第四

我很高兴它对您有所帮助。现在尝试在jQuery插件中组织代码:P