gpt4 book ai didi

Javascript:滚动时从一个 div 滚动到另一个?

转载 作者:太空狗 更新时间:2023-10-29 13:49:29 24 4
gpt4 key购买 nike

我希望能够在向下滚动时直接转到下一个 div,而在向上滚动时直接转到上一个 div。这是我的文件,其中包含两个 div 的示例:

$(document).ready(function() {
var lastScrollTop = 0;

function findPos(obj) {
var curtop = 0;
if (obj.offsetParent) {
do {
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
return [curtop];
}
}

$(window).scroll(function(event) {
var st = $(this).scrollTop();
if (st > lastScrollTop) {
$('html, body').animate({
scrollTop: $("#space_od").offset().top
}, 500);
} else {
$('html, body').animate({
scrollTop: $("#black_hole").offset().top
}, 500);
}
lastScrollTop = st;
});
});
body {
padding: 0;
margin: 0;
}

#black_hole {
background-image: url("black_hole.jpg");
background-position: center;
display: block;
height: 100vh;
width: 100%;
}

#space_od {
background-image: url("2001.png");
background-position: center;
display: block;
height: 100vh;
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="black_hole">
</div>
<div id="space_od">
</div>

第一次向下滚动时似乎工作正常,但向上滚动时却不行,它似乎移动了几个像素然后停止了。有什么想法吗?

最佳答案

scrollTo 是添加到您需要滚动到的 div 的类:

<div id="black_hole" class="scrollTo">

</div>
<div id="space_od" class="scrollTo">

</div>

Js

var scrolling = false;
var currentPos = 0;

function scrollUp(){
if(!scrolling && currentPos > 0 ){
scrolling=true;
currentPos --;
var scrollToElement = $('.scrollTo')[currentPos];

$('html, body').animate({
scrollTop: $(scrollToElement).offset().top
}, 500, function(){
scrolling = false;
});
}
}

function scrollDown(){
if(!scrolling && currentPos < $('.scrollTo').length-1 ){
scrolling=true;
currentPos ++;
var scrollToElement = $('.scrollTo')[currentPos];

$('html, body').animate({
scrollTop: $(scrollToElement).offset().top
}, 500,function(){
scrolling = false;
});
}
}

$(document).ready(function() {

// Get the current position on load

for( var i = 0; i < $('.scrollTo').length; i++){
var elm = $('.scrollTo')[i];

if( $(document).scrollTop() >= $(elm).offset().top ){
currentPos = i;
}
}

$(document).bind('DOMMouseScroll', function(e){
if(e.originalEvent.detail > 0) {
scrollDown();
}else {
scrollUp();
}
return false;
});

$(document).bind('mousewheel', function(e){
if(e.originalEvent.wheelDelta < 0) {
scrollDown();
}else {
scrollUp();
}
return false;
});
});

关于Javascript:滚动时从一个 div 滚动到另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31905765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com