Я не могу заставить свой Javascript работать с моим текстом

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

HTML-код:

<p class="align-right slide-in">
hoi

</p>
<p class="align-left slide-in">


hoi
</p>
<p class="align-right slide-in">hoi</p>

Код CSS

    .slide-in {
      opacity:0;
      transition:all .5s;
    }

    .align-left.slide-in {
      transform:translateX(-30%) scale(0.95);
    }
    .align-right.slide-in {
      transform:translateX(30%) scale(0.95);
    }

    .slide-in.active {
      opacity:1;
      transform:translateX(0%) scale(1);
    }
.slide-in.active {
      opacity:1;
      transform:translateX(0%) scale(1);
    }

Я украл большую часть сценария из 30-дневного вызова JavaScript. Он был создан для слайдов в изображениях, но я хочу применить это к своему тексту.

 <script>
        function debounce(func, wait = 20, immediate = true) {
          var timeout;
          return function() {
            var context = this, args = arguments;
            var later = function() {
              timeout = null;
              if (!immediate) func.apply(context, args);
            };
            var callNow = immediate && !timeout;
            clearTimeout(timeout);
            timeout = setTimeout(later, wait);
            if (callNow) func.apply(context, args);
          };
        };

        var sliderImages = document.querySelectorAll('.slide-in');

    function checkSlide() {
      sliderImages.forEach(sliderImage => {
        // half way through the image
        const slideInAt = (window.scrollY + window.innerHeight) - sliderImage.height / 2;
        // bottom of the image
        const imageBottom = sliderImage.offsetTop + sliderImage.height;
        const isHalfShown = slideInAt > sliderImage.offsetTop;
        const isNotScrolledPast = window.scrollY < imageBottom;
        if (isHalfShown && isNotScrolledPast) {
          sliderImage.classList.add('active');
        } else {
          sliderImage.classList.remove('active');
        }
      });
    }

    window.addEventListener('scroll', debounce(checkSlide));

1 ответ

Ваша страница должна быть достаточно большой, чтобы вызвать событие прокрутки. Вам также необходимо изменить логику в checkSlide работать с p элементы. Вот пример JSFiddle из работающих переходов:

https://jsfiddle.net/3uf07s5n/

function checkSlide() {
      sliderImages.forEach(sliderImage => {

          sliderImage.classList.add('active');
          // You need to figure out when to add and remove the active class
          // sliderImage.classList.remove('active');
      });
    }
Другие вопросы по тегам