Что делает скрипт

Слова в большом абзаце по очереди «проявляются» по мере прокрутки страницы.

Как подключить

  1. В Zero Block создайте текстовый элемент, задайте ему класс paint-text.
  2. Включите «Фиксацию при скролле» (дистанция 500, смещение 200) и высоту артборда около 4000px.
  3. Вставьте код в блок T123 «HTML-код» на страницу (или в «Настройки страницы» → «HTML-код для вставки внутрь head»).
  4. Опубликуйте страницу: код выполняется только на опубликованной странице.

Код

Код для вставки
<style>
    .paint-text .tn-atom span {
        transition: opacity 0.5s;
    }
</style>
<script>
    function waitSelector(selector, callback) {
        const intervalId = setInterval(()=>{
            let element = document.querySelector(selector)
            if (element != null) {
                callback(element);
                clearInterval(intervalId);
            }
        }
        , 100);
    }

    $(()=>{
        let $container = $(".paint-text").css({
            "position": "relative"
        });
        /*let textBackground = "white";*/
        let textBackground = "linear-gradient(132deg, #0070FF 0%, #06ECC3 100%)";

        waitSelector($(".tn-atom__sticky-wrapper", $container).selector, (stickyWrapper)=>{
            let $stickyWrapper = $(stickyWrapper);

            console.log($stickyWrapper);

            let $rec = $container.closest(".t-rec");

            let $coloredText = $(".tn-atom", $container).css({
                "position": "absolute"
            });

            let $curtainText = $coloredText.clone();

            $coloredText.css({
                "background": textBackground,
                "-webkit-background-clip": "text",
                "-webkit-text-fill-color": "transparent"
            });

            $coloredText.html($coloredText.html().replace(/\S/g, "<span>$&</span>"));
            // $curtainText.html($curtainText.html().replace(/\S/g, "<span>$&</span>"));

            let coloredTokens = $(">span", $coloredText).toArray().map($);
            // let curtainTokens = $(">span", $curtainText).toArray().map($);

            let textInitialOffset = $container.offset().top - parseInt($container.attr("data-animate-fix-trgofst") || 0);
            //let textInitialOffset = parseInt($container.attr("data-field-width-value"));
            let fixDistance = parseInt($container.attr("data-animate-fix-dist"));

            $(window).scroll(()=>{
                let scrollOffset = window.scrollY - textInitialOffset;

                let fillProgress = scrollOffset / fixDistance;
                fillProgress = fillProgress < 0 ? 0 : fillProgress > 1 ? 1 : fillProgress;

                // console.log(fillProgress)

                for (let i = 0; i < coloredTokens.length; i++) {
                    // console.log((i + 1) / coloredTokens.length)
                    if ((i + 1) / coloredTokens.length <= fillProgress) {
                        coloredTokens[i].css({
                            "opacity": 1
                        });
                        // curtainTokens[i].css({"opacity": 0});
                    } else {
                        coloredTokens[i].css({
                            "opacity": 0
                        });
                        // curtainTokens[i].css({"opacity": 1});
                    }
                }
            }
            ).scroll()

            $stickyWrapper.prepend($curtainText);
        }
        )
    }
    )
</script>
тут нужно написать стили и js/css для того, чтобы отображались файлы скриптов