Javascript 滚动时滚动到一个div,当div消失时滚动到top
我的网页上有两个div。第一个分区是“模式”(红色),第二个分区是“项目”(蓝色) 第一次使用scrolls时,窗口会自动滚动到第二个div“#projets”。我正在使用jquery滚动到插件。 它工作得很好,即使当用户滚动大量的滚动时,可能会出现从“#projets”分区偏移的情况。。。如果有人有一个想法来纠正这将是很好的,但这不是我的主要问题 现在,当滚动时,只要“#pattern”div再次出现,我就尝试滚动回页面顶部(“#pattern”div),红色的那个。因此,基本上应该是在我的div“#projets”屏幕顶部的偏移量大于1时 我尝试了很多解决方案,但都没有结果,使用了标志和多种条件。。。它可以与此页面上的内容相同,但用户应该能够在页面内自由滚动,而不是从一个散列滚动到另一个散列: 这是我的html:Javascript 滚动时滚动到一个div,当div消失时滚动到top,javascript,jquery,scroll,offset,scrollto,Javascript,Jquery,Scroll,Offset,Scrollto,我的网页上有两个div。第一个分区是“模式”(红色),第二个分区是“项目”(蓝色) 第一次使用scrolls时,窗口会自动滚动到第二个div“#projets”。我正在使用jquery滚动到插件。 它工作得很好,即使当用户滚动大量的滚动时,可能会出现从“#projets”分区偏移的情况。。。如果有人有一个想法来纠正这将是很好的,但这不是我的主要问题 现在,当滚动时,只要“#pattern”div再次出现,我就尝试滚动回页面顶部(“#pattern”div),红色的那个。因此,基本上应该是在我的d
<div id="pattern"></div>
<div id="projets"></div>
还有我的jquery:
var flag=0 ;
$(window).on('scroll',function(){
var top_projets_position = $("#projets").offset().top - $(window).scrollTop();
if((flag==0) && $(window).scrollTop()>1){
$(window).scrollTo('#projets', 500);
flag=1;
}
if($(window).scrollTop()==0){
flag=0;
}
});
以下是JSFIDLE:
希望有人能帮我,我不知道我做错了什么,也许是一个错误的方法!谢谢看起来您需要跟踪3件事情:
var-prev\u scroll=0//
var flag=0 ;
$(window).on('scroll',function(){
var top_projets_position = $("#projets").offset().top - $(window).scrollTop();
if((flag==0) && $(window).scrollTop()>1){
$(window).scrollTo('#projets', 500);
flag=1;
}
if($(window).scrollTop()==0){
flag=0;
}
});
var prev_scroll = 0; // <-- to determine direction of scrolling
var current_view ="#pattern"; // <-- to determine what element we are viewing
var allowed = true; // <-- to prevent scrolling confusion during animation
var top_projets_position = $("#projets").offset().top + 1;
$(window).on('scroll',function(){
var current_scroll = $(window).scrollTop();
if(current_scroll < top_projets_position && current_view=="#projets" && current_scroll < prev_scroll){
scrollToTarget("#pattern");
}
if($(window).height() + current_scroll > top_projets_position && current_view=="#pattern" && current_scroll > prev_scroll){
scrollToTarget("#projets");
}
prev_scroll = current_scroll;
});
function scrollToTarget(selector){
if(allowed){
allowed = false;
$(window).scrollTo(selector, {
'duration':500,
'onAfter': function(){ allowed = true; current_view = selector;}
});
}
}