Для начала работы с ScrollMagic необходимо подключить библиотеку и обеспечить корректное окружение для разработки. Библиотека ScrollMagic распространяется через CDN и npm. Наиболее удобный способ интеграции в современный проект — через npm:
npm install scrollmagic
Если проект использует сборщик модулей (Webpack, Parcel, Vite), ScrollMagic можно импортировать напрямую:
import ScrollMagic from 'scrollmagic';
Для использования дополнительных плагинов, таких как анимации с GSAP, необходимо установить соответствующие зависимости:
npm install gsap
И подключить их:
import { gsap } from "gsap";
import 'scrollmagic/scrollmagic/uncompressed/plugins/animation.gsap';
При подключении через CDN достаточно добавить скрипты в HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.8/ScrollMagic.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.8/plugins/animation.gsap.min.js"></script>
Для корректного использования ScrollMagic рекомендуется поддерживать минимально необходимую структуру проекта:
project/
├─ index.html
├─ js/
│ ├─ main.js
├─ css/
│ ├─ style.css
Поддержка современного синтаксиса ES6 и модулей облегчает импорт ScrollMagic и GSAP, а также интеграцию с другими библиотеками.
Основной объект ScrollMagic — Controller. Контроллер отслеживает прокрутку страницы и управляет всеми сценами:
const controller = new ScrollMagic.Controller();
Ключевые моменты при инициализации контроллера:
const controller = new ScrollMagic.Controller({
globalSceneOptions: { triggerHook: 0.5 }, // по умолчанию сцена срабатывает на середине экрана
loglevel: 3, // уровень логирования (0-3)
});
Сцена (ScrollMagic.Scene) — это основная единица, на
которой определяется анимация или действие при прокрутке. Базовая
структура сцены:
const scene = new ScrollMagic.Scene({
triggerElement: '#myElement', // элемент, с которого начинается сцена
duration: 200, // длительность сцены в пикселях
offset: 50, // смещение начала сцены от триггера
triggerHook: 0.8 // точка срабатывания сцены на экране
})
.setClassToggle('#myElement', 'active') // добавление класса при срабатывании сцены
.addTo(controller); // привязка сцены к контроллеру
Основные параметры сцены:
Для плавных анимаций лучше использовать GSAP. ScrollMagic
предоставляет плагин animation.gsap, который связывает
сцены с таймлайнами GSAP:
const tween = gsap.to('#myElement', { duration: 1, x: 300, opacity: 0.5 });
const scene = new ScrollMagic.Scene({
triggerElement: '#myElement',
duration: 400
})
.setTween(tween)
.addTo(controller);
Особенности:
gsap.to,
gsap.from, gsap.fromTo.gsap.timeline) позволяют комбинировать
несколько анимаций в одной сцене.Для отладки удобно включать индикаторы сцен:
scene.addIndicators({
name: "scene 1",
colorStart: "#ff0000",
colorEnd: "#00ff00",
indent: 10
});
Live Server или
Vite) для корректной работы модулей.Для больших проектов полезно создавать отдельные файлы:
js/
├─ controllers.js // инициализация ScrollMagic.Controller
├─ scenes.js // создание всех сцен
├─ animations.js // функции анимаций GSAP
Пример:
import { controller } from './controllers';
import { initScenes } from './scenes';
document.addEventListener('DOMContentLoaded', () => {
initScenes(controller);
});
Такой подход упрощает поддержку и масштабирование проекта с большим количеством анимаций.