【发布时间】:2019-03-03 16:17:51
【问题描述】:
我正在尝试创建一个简单的“一页”滚动。
目标是在滚动时滚动 window.innerHeight - 就像 fullPage.js 和类似库一样。
- lastScrollTop 用于确定滚动方向。
- wh 用于从当前添加和减去 window.innerHeight 滚动顶部。
问题是,一旦你滚动(一次),它 滚动到最底部。我解决这个问题的尝试是创建 var A,当滚动动画进行时变为1, 好像没用。
var lastScrollTop = 0;
var a = 0;
var wh = 0;
$(window).scroll(function () {
var st = $(window).scrollTop();
if (a == 0) {
a = 1;
if (st > lastScrollTop) {
/* SCROLLING DOWN */
wh = $(window).scrollTop() + window.innerHeight;
$("html, body").stop().animate({scrollTop: wh}, 700, function () {
a = 0;
});
} else {
/* SCROLLING UP */
wh = $(window).scrollTop() - window.innerHeight;
$("html, body").stop().animate({scrollTop: wh}, 700, function () {
a = 0;
});
}
lastScrollTop = st;
}
});
body {
margin: 0;
}
p {
margin: 0;
font-size: 70px;
color: #fff;
}
.section {
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="section" style="background:rgb(100,100,255)">
<p>Blue</p>
</div>
<div class="section" style="background:rgb(60,150,60)">
<p>Green</p>
</div>
<div class="section" style="background:rgb(180,30,30)">
<p>Red</p>
</div>
<div class="section" style="background:rgb(80,0,0)">
<p>Brown</p>
</div>
<div class="section" style="background:rgb(0,0,0)">
<p>Black</p>
</div>
【问题讨论】:
标签: javascript jquery html css