@Alex_vs_Predator
Начинающий веб-разработчик

Как запустить скрипт при прокрутке страницы?

Добрый день, всем и с праздников вас, коллеги!

Скажите пожалуйста, как можно запустить скрипт при прокрутке страницы?
Например у меня есть шапка сайта, затем секция слайдера и после секция с анимацией SVG
<div class="doing-lines">
                            <svg width="103" height="388" viewBox="0 0 104 390" fill="none" xmlns="http://www.w3.org/2000/svg" data-llp-composed="true" id="line" class="lazy-line-painter"> <path d="M104 389H1V0.5" data-llp-id="line-0" data-llp-duration="990" data-llp-delay="0" fill-opacity="0" style="" /></svg>
                        </div>


После есть скрипт работы самой svg:
(function () {
               document.onreadystatechange = () => {
                   if (document.readyState === 'complete') {
                       let el = document.querySelector('#line');
                       let myAnimation = new LazyLinePainter(el, {
                           "ease": "easeLinear",
                           "strokeWidth": 3.4,
                           "strokeOpacity": 0.3,
                           "strokeColor": "#ffffff",
                           "strokeCap": "square",
                           "delay": 260
                       });
                       myAnimation.paint();
                   }
               }
           })();


НО как сделать, так, чтобы анимация запускалась только когда я прокрутил к определенному блоку?
Пробовал так, но работает через раз...
var doing = $('.offer__arrows');
    var doingTop = doing.offset().top;
    $(window).bind('scroll', function () {
       var windowTop = $(this).scrollTop();
       if (windowTop > doingTop) {
           (function () {
               document.onreadystatechange = () => {
                   if (document.readyState === 'complete') {
                       let el = document.querySelector('#line');
                       let myAnimation = new LazyLinePainter(el, {
                           "ease": "easeLinear",
                           "strokeWidth": 3.4,
                           "strokeOpacity": 0.3,
                           "strokeColor": "#ffffff",
                           "strokeCap": "square",
                           "delay": 260
                       });
                       myAnimation.paint();
                   }
               }
           })();
       }
    });


Спасибо!
  • Вопрос задан
  • 1246 просмотров
Пригласить эксперта
Ответы на вопрос 1
Krauzer
@Krauzer
Веб-разработчик
Используйте переменную window.pageYOffset.
Тут подробнее - https://www.w3schools.com/jsref/prop_win_pagexoffs...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы