GSAP (GreenSock Animation Platform) предоставляет мощный набор
инструментов для анимации в JavaScript, включая удобные методы работы с
числами и значениями, которые выходят за пределы стандартных диапазонов.
Функции clamp, wrap и interpolate
играют ключевую роль при работе с динамическими анимациями, управлением
значениями и плавным переходом между состояниями объектов.
Функция clamp используется для ограничения числового
значения в определённом диапазоне. Она особенно полезна, когда
необходимо предотвращать выход значений за допустимые границы при
анимации или взаимодействии с пользователем.
Синтаксис:
gsap.utils.clamp(min, max, value);
min — минимальное допустимое значение.max — максимальное допустимое значение.value — исходное значение, которое требуется
ограничить.Примеры использования:
let limitedValue = gsap.utils.clamp(0, 100, 150);
console.log(limitedValue); // 100
Если значение выходит за пределы диапазона [min, max],
оно автоматически корректируется до ближайшей границы. При анимации это
предотвращает нежелательные эффекты, такие как “вылет” объектов за
пределы видимой области.
Ключевые моменты:
mousemove, scroll) для ограничения
значений.Функция wrap позволяет создавать циклическое поведение
чисел, возвращая их в заданный диапазон, когда они выходят за пределы.
Это удобно для бесконечных циклов, круговых анимаций или повторяющихся
эффектов.
Синтаксис:
gsap.utils.wrap(min, max, value);
min — нижняя граница диапазона.max — верхняя граница диапазона.value — значение для “оборачивания”.Примеры использования:
let wrappedValue = gsap.utils.wrap(0, 360, 370);
console.log(wrappedValue); // 10
Значение 370 “оборачивается” в диапазон [0, 360], что
идеально подходит для работы с углами вращения, позиционированием на
кольце или циклическими эффектами в интерфейсе.
Ключевые моменты:
clamp: значение не фиксируется на границе, а
возвращается в диапазон циклически.Функция interpolate используется для создания плавного
перехода между двумя или более значениями. Она часто применяется для
анимации числовых, цветовых и комплексных свойств.
Синтаксис:
gsap.utils.interpolate(start, end, progress);
start — начальное значение.end — конечное значение.progress — число от 0 до 1, задающее прогресс
интерполяции.Примеры использования:
let interpolatedValue = gsap.utils.interpolate(0, 100, 0.25);
console.log(interpolatedValue); // 25
Функция также поддерживает массивы значений и строковые шаблоны:
let color = gsap.utils.interpolate(["#ff0000", "#00ff00"], 0.5);
console.log(color); // "#808000" (плавный переход цвета)
Ключевые моменты:
| Функция | Назначение | Типичные сценарии |
|---|---|---|
clamp |
Ограничение значения диапазоном | Положение, размер, прозрачность |
wrap |
Циклическое возвращение значения в диапазон | Углы, круговые анимации, бесконечные эффекты |
interpolate |
Плавный переход между значениями | Анимация чисел, цветов, CSS свойств |
Пример комбинированного использования:
let angle = gsap.utils.wrap(0, 360, gsap.utils.clamp(0, 400, 390));
let rotation = gsap.utils.interpolate(0, 180, 0.5);
console.log(angle); // 30
console.log(rotation); // 90
В этом примере значение сначала ограничивается функцией
clamp, затем оборачивается в диапазон с помощью
wrap, а функция interpolate используется для
плавного перехода угла. Такой подход обеспечивает контроль, цикличность
и плавность анимации одновременно.
Эти утилиты GSAP позволяют создавать сложные, динамичные и
контролируемые анимации, упрощая работу с диапазонами, прогрессией и
циклическими эффектами. Использование clamp,
wrap и interpolate в комбинации обеспечивает
точное управление значениями при любых сценариях анимации.