私はjavascriptスクロールに取り組んでいます。次のhtmlコードがあります
<div class="wrapper">
<div class="red div current"></div>
<div class="blue div"></div>
<div class="green div"></div>
<div class="yellow div"></div>
</div>
上記のコードには、4 つの div タグがありますred, blue, green and yellow
。それらはすべて次の css 内の位置です。
html, body {
height: 100%;
}
.wrapper {
overflow: hidden;
height: 100%;
}
.div {
position: relative;
height: 100%;
}
.red {
background: red;
}
.blue {
background: blue;
}
.green {
background: green;
}
.yellow {
background: yellow;
}
上記の html と css では、赤い div タグが現在のものです。これは、ユーザーが画面に赤い div タグを見ていることを意味します。今私がやろうとしているのは、ユーザーがウィンドウを1回スクロールすると、次のdivタグ、つまり青がアニメーション化されて一番上に移動し、ユーザーに見えるようになりますが、赤のdivタグは青の後ろにあります。これと同じプロセスが緑と黄色の両方に当てはまります。
問題は、ユーザーが1回スクロールするとdivタグがアニメーション化されるはずですが、現在のjavascriptコードはスクロールを読み続け、divタグを次々とアニメーション化することです。私が望むのは、ユーザーが一度スクロールしてから、青い div タグがアニメーション化されるまでスクロールを無効にする必要があることです。次に、スクロールを有効にする必要があります。ユーザーが 2 回目にスクロールすると、緑色の div タグのアニメーションが完了するまでスクロールが無効になります。黄色も同様です。
上記を達成するにはどうすればよいですか?
ここに私のjavascriptがあります
$(window).on("scroll", function () {
var next = $('.current').next();
var height = next.outerHeight();
next.animate({top: '-=' + height}, 500, function () {
$(this).prev().removeClass('current');
$(this).addClass('current');
});
});