GSAP Smooth — это мощное дополнение к библиотеке GSAP, которое используется для создания плавного прокручивания страниц и элементов. Он помогает анимировать скролл страницы или секции с помощью плавных переходов, что улучшает восприятие и делает интерфейс более динамичным.

Ниже приводится полная инструкция по установке и использованию GSAP ScrollSmoother.

1. Установка GSAP и ScrollSmoother

Подключение через CDN

Для подключения GSAP и плагина ScrollSmoother через CDN добавьте следующие строки в HTML-файл:


<script src="https://daytips.ru/global/gsap/gsap.min.js"></script>
<script src="https://daytips.ru/global/gsap/ScrollSmoother.min.js"></script>

Установка через npm

Если вы используете npm:


npm install gsap
npm install gsap/ScrollSmoother

2. Базовая настройка ScrollSmoother

После подключения плагина можно настроить плавный скроллинг для всей страницы или для определенного элемента.

Пример: Плавный скроллинг для всей страницы


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>GSAP ScrollSmoother</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            overflow-x: hidden;
        }
        .content {
            height: 2000px;
            background: linear-gradient(to bottom, #ff7e5f, #feb47b);
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 30px;
            color: white;
        }
    </style>
</head>
<body>

    <div class="content">
        Плавный скроллинг с GSAP ScrollSmoother!
    </div>

    <script src="https://daytips.ru/global/gsap/gsap.min.js"></script>
    <script src="https://daytips.ru/global/gsap/ScrollSmoother.min.js"></script>
    <script>
        // Инициализация GSAP ScrollSmoother
        gsap.registerPlugin(ScrollSmoother);

        ScrollSmoother.create({
            wrapper: 'body', // элемент, в котором происходит скроллинг
            content: '.content', // элемент, который будет прокручиваться
            smooth: 1.5, // плавность скроллинга
            effects: true // включить эффекты
        });
    </script>
</body>
</html>

3. Настройка плавности скролла

Вы можете настроить плавность скролла с помощью параметра smooth, который указывает, насколько плавным будет скроллинг. Чем выше значение, тем более плавным будет движение.

Пример с разной плавностью скроллинга


<script>
    ScrollSmoother.create({
        wrapper: 'body',
        content: '.content',
        smooth: 2.5, // более плавный скроллинг
        effects: true
    });
</script>

4. Плавный скроллинг внутри элемента

Плагин ScrollSmoother можно применять не только ко всей странице, но и к отдельным элементам. Это удобно, если вам нужно создать прокрутку в определённой секции.

Пример: Плавная прокрутка внутри блока


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Smooth Scrolling inside a Section</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            font-family: Arial, sans-serif;
        }
        .scroll-section {
            height: 400px;
            width: 100%;
            overflow-y: auto; /* включаем вертикальную прокрутку */
            border: 1px solid #ddd;
        }
        .content {
            height: 1200px;
            background: linear-gradient(to bottom, #36d1dc, #5b86e5);
            color: white;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 24px;
        }
    </style>
</head>
<body>

    <div class="scroll-section">
        <div class="content">
            Плавный скроллинг внутри секции
        </div>
    </div>

    <script src="https://daytips.ru/global/gsap/gsap.min.js"></script>
    <script src="https://daytips.ru/global/gsap/ScrollSmoother.min.js"></script>
    <script>
        // Плавный скроллинг внутри элемента
        gsap.registerPlugin(ScrollSmoother);

        ScrollSmoother.create({
            wrapper: '.scroll-section', // скроллимый элемент
            content: '.content',
            smooth: 2, // плавность
            effects: true
        });
    </script>
</body>
</html>

5. Эффекты с прокруткой

Плагин ScrollSmoother также поддерживает различные эффекты для элементов при прокрутке. Например, можно анимировать элементы, которые появятся в зоне видимости при прокрутке.

Пример: Появление элемента с плавным скроллингом


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ScrollSmoother with Scroll Effects</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            font-family: Arial, sans-serif;
        }
        .content {
            height: 2000px;
            background: linear-gradient(to bottom, #ff7e5f, #feb47b);
        }
        .box {
            width: 100px;
            height: 100px;
            background-color: red;
            margin: 0 auto;
            margin-top: 800px;
            opacity: 0; /* скрываем элемент */
        }
    </style>
</head>
<body>

    <div class="content">
        <div class="box"></div>
    </div>

    <script src="https://daytips.ru/global/gsap/gsap.min.js"></script>
    <script src="https://daytips.ru/global/gsap/ScrollSmoother.min.js"></script>
    <script>
        gsap.registerPlugin(ScrollSmoother, ScrollTrigger);

        // Инициализация ScrollSmoother
        ScrollSmoother.create({
            wrapper: 'body',
            content: '.content',
            smooth: 1.5
        });

        // Анимация появления элемента при прокрутке
        gsap.from(".box", {
            scrollTrigger: {
                trigger: ".box",
                start: "top 80%", // запускается, когда элемент попадает в область видимости
                end: "bottom 20%",
                toggleActions: "play none none reverse"
            },
            opacity: 0,
            y: 100, // смещаем элемент по оси Y на 100px
            duration: 1
        });
    </script>
</body>
</html>

6. Контроль ScrollSmoother

Вы можете управлять ScrollSmoother динамически через JavaScript, например, остановить его или перезапустить при необходимости.

Пример: Остановка и перезапуск ScrollSmoother


// Остановка скроллинга
ScrollSmoother.get().paused(true);

// Перезапуск скроллинга
ScrollSmoother.get().paused(false);

Заключение

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

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