В ScrollMagic каждый Scene автоматически создаёт
вспомогательный элемент DOM, называемый spacer. Spacer
— это пустой контейнер, который используется для управления
позиционированием и отслеживанием прокрутки, когда сцена активна. Он
предотвращает «скачки» контента и обеспечивает правильную работу
анимаций на странице.
По умолчанию класс этого элемента —
scrollmagic-pin-spacer, но его можно кастомизировать с
помощью свойства spacerClass при создании
сцены. Это полезно для стилизации или интеграции с существующими
CSS-структурами.
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 300,
triggerHook: 0.5
})
.setPin("#pinElement", { spacerClass: "custom-spacer" })
.addTo(controller);
Объяснение параметров:
triggerElement — элемент, при достижении которого сцена
активируется.duration — длина сцены в пикселях (или процент от
viewport).triggerHook — точка на экране, где срабатывает сцена (0
— верх, 1 — низ).setPin(element, options) — закрепление элемента, где
options.spacerClass задаёт CSS-класс для spacer’а.В приведённом примере spacer для закреплённого элемента будет иметь
класс custom-spacer вместо стандартного
scrollmagic-pin-spacer.
spacerClassИспользование spacerClass позволяет добавлять свои
CSS-свойства:
.custom-spacer {
background-color: rgba(0, 0, 0, 0.05);
border: 1px dashed #999;
}
Spacer теперь будет визуально заметен, что удобно для отладки или для декоративных целей.
При интеграции с CSS-фреймворками (Bootstrap, Tailwind) стандартный
класс scrollmagic-pin-spacer может конфликтовать с
глобальными стилями. Присвоение собственного класса через
spacerClass помогает избежать нежелательных эффектов.
Если на странице несколько pinned-элементов, для каждого можно задать
свой spacerClass:
scene1.setPin("#header", { spacerClass: "header-spacer" });
scene2.setPin("#sidebar", { spacerClass: "sidebar-spacer" });
Это позволяет применять уникальные стили или анимации к каждому spacer отдельно.
spacerClass.setPin()..update() для корректного
применения.scene.setPin("#pinElement", { spacerClass: "new-spacer" });
scene.update();
Для анализа работы закреплённых элементов и spacer’ов удобно использовать временные стили:
.debug-spacer {
outline: 2px solid red;
background: rgba(255, 0, 0, 0.1);
}
Применяя spacerClass: "debug-spacer", можно видеть
точное положение spacer в реальном времени.
spacerClass в ScrollMagicСвойство spacerClass обеспечивает гибкий
контроль над вспомогательным DOM-элементом, создаваемым при
закреплении. Оно полезно для:
Правильное использование spacerClass делает работу с
ScrollMagic более предсказуемой и позволяет избежать конфликтов с
существующими стилями страницы.