ScrollMagic — это библиотека для управления анимациями при скролле, которая позволяет создавать динамичные и интерактивные веб-интерфейсы. Для работы с ней в современных проектах предпочтительно использовать пакетный менеджер npm, что упрощает управление зависимостями и интеграцию с сборщиками вроде Webpack или Vite.
Для начала необходимо убедиться, что на проекте установлен Node.js и npm. Проверка версий осуществляется командами:
node -v
npm -v
После этого в директории проекта следует выполнить установку ScrollMagic:
npm install scrollmagic
Эта команда скачивает последнюю стабильную версию библиотеки и
добавляет её в package.json в разделе
dependencies.
После установки структура проекта с включением ScrollMagic обычно выглядит так:
project/
├─ node_modules/
│ ├─ scrollmagic/
├─ package.json
├─ src/
│ ├─ index.js
Файл package.json автоматически получает запись:
"dependencies": {
"scrollmagic": "^2.0.8"
}
При необходимости можно указать конкретную версию:
npm install scrollmagic@2.0.7
Это гарантирует стабильность работы проекта при обновлениях библиотеки.
Для работы с ScrollMagic в современном ES6-проекте необходимо импортировать основной класс и дополнительные плагины:
import ScrollMagic from "scrollmagic";
import "scrollmagic/scrollmagic/uncompressed/plugins/debug.addIndicators.js";
import "scrollmagic/scrollmagic/uncompressed/plugins/animation.gsap.js";
Для проектов на CommonJS можно использовать:
const ScrollMagic = require("scrollmagic");
require("scrollmagic/scrollmagic/uncompressed/plugins/debug.addIndicators.js");
require("scrollmagic/scrollmagic/uncompressed/plugins/animation.gsap.js");
После подключения создается экземпляр контроллера:
const controller = new ScrollMagic.Controller();
Контроллер управляет всеми сценами (Scene) на странице и
отвечает за отслеживание скролла.
Пример создания простой сцены:
const scene = new ScrollMagic.Scene({
triggerElement: "#trigger", // элемент, при котором срабатывает анимация
duration: 300, // длительность эффекта в пикселях
offset: 50 // смещение триггера относительно элемента
})
.setClassToggle("#animate", "visible") // добавление CSS класса
.addTo(controller); // добавление сцены в контроллер
Ключевые моменты:
triggerElement.ScrollMagic часто используется совместно с GSAP для сложных анимаций:
import { gsap } from "gsap";
const tween = gsap.to("#animate", { x: 300, rotation: 360, duration: 2 });
const scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 400
})
.setTween(tween)
.addIndicators()
.addTo(controller);
Здесь:
Для корректной работы с Webpack или Vite следует учесть:
babel-loader для транспиляции.npm install --save-dev @types/scrollmagic
После установки и импорта рекомендуется создать минимальный пример на странице:
<div id="trigger" style="margin-top: 200px;">Триггер</div>
<div id="animate" style="width:100px; height:100px; background:red;">Анимация</div>
При скролле элемент #animate должен получать класс
visible или проигрывать GSAP-анимацию, если сцена настроена
с setTween.
Хотите, я подготовлю отдельный раздел с подробным примером сложной анимации ScrollMagic с GSAP, где будет несколько взаимодействующих сцен и индикаторов?