Здесь вам нужно пройтись по всем доступным разделам и в зависимости от того, какие разделы совпадают, вы должны применить класс.
if (winTop >= section - 400) {
$(".section").addClass("animate");
};
Плюс, у вас нет ;
в концеif
оператор.
Ваш окончательный код будет выглядеть так:
$(window).on("scroll", function(){
var winTop = $(this).scrollTop();
$(".section").each(function () {
var section = $(this).offset().top;
if(winTop >= section-400) {
$(this).addClass("animate");
}
});
});
Я бы предложил удалить класс animate
из всех остальных разделов.Итак, измените ваш код следующим образом:
$(window).on("scroll", function(){
var winTop = $(this).scrollTop();
$(".section").removeClass("animate").each(function () {
var section = $(this).offset().top;
if(winTop >= section-400) {
$(this).addClass("animate");
}
});
});
Кроме того, как только вы начнете добавлять класс, вы не хотите, чтобы другие имели класс в них.Таким образом, укажите и верхнее значение.
$(window).on("scroll", function(){
var winTop = $(this).scrollTop();
$(".section").removeClass("animate").each(function () {
var section = $(this).offset().top;
if(winTop >= section-400) {
$(".section").removeClass("animate");
$(this).addClass("animate");
}
});
});
Рабочий фрагмент:
$(window).on("scroll", function(){
var winTop = $(this).scrollTop();
$(".section").removeClass("animate").each(function () {
var section = $(this).offset().top;
if(winTop >= section-400) {
$(".section").removeClass("animate");
$(this).addClass("animate");
}
});
});
.section {
height: 750px;
}
.animate {
background: #960;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="home__one section">Section one</section>
<section class="home__two section">Section two</section>
<section class="home__three section">Section three</section>
<section class="home__four section">Section four</section>
Предварительный просмотр:
Демонстрация, которую вы можете увидетьработает медленно, прокручивая: JSBin Demo .