Исчезают элементы при прокрутке / загрузке страницы

#jquery

#jquery

Вопрос:

Я работаю над сайтом, на котором я хочу, чтобы содержимое исчезало и при прокрутке отображалось в окне просмотра. У меня есть приведенный ниже код, который хорошо работает при прокрутке, но я хотел бы улучшить его двумя способами, которые, похоже, я не могу понять, как достичь того, чего я хочу…

Во-первых, я хочу, чтобы эта функция запускалась при загрузке страницы, поэтому, если страница прокручивается при загрузке — элементы, которые находятся в поле зрения, должны исчезать и анимироваться в поле зрения — в настоящее время они этого не делают.

Во-вторых, есть ли способ немного доработать этот код, чтобы указать% элемента, который должен быть в поле зрения, прежде чем произойдет анимация и исчезновение анимации?

 function fadeInDivsOScrollToo() {
$('.fade-in').each(function() {
    var top_of_element = $(this).offset().top;
    var bottom_of_element = $(this).offset().top   $(this).outerHeight();
    var bottom_of_screen = $(window).scrollTop()   $(window).innerHeight();
    var top_of_screen = $(window).scrollTop();

    if ((bottom_of_screen > top_of_element) amp;amp; (top_of_screen < bottom_of_element) amp;amp; !$(this).hasClass('is-visible')) {
        $(this).addClass('is-visible');
    }
});

}
$(window).on('load', function(){ fadeInDivsOScrollToo(); });
$(window).on('scroll', function(){ fadeInDivsOScrollToo(); });
$(window).on('resize', function(){ fadeInDivsOScrollToo(); });
 

с помощью CSS:

 .fade-in {
  opacity: 0;
  transform: translateY(20vh);
  visibility: hidden;
  transition: opacity 0.8s ease-out, transform 1.2s ease-out;
  will-change: opacity, visibility;
}

.fade-in.is-visible {
  opacity: 1;
  transform: none;
  visibility: visible;
}
 

Ответ №1:

Не волнуйтесь — в итоге я использовал этот подход и вместо этого использовал путевые точки.