Библиотека GSAP (GreenSock Animation Platform) предоставляет широкий
набор инструментов для работы с анимацией в JavaScript. Среди этих
инструментов особое место занимают утилиты
(gsap.utils), которые упрощают выполнение часто
встречающихся задач, таких как генерация случайных значений, работа с
диапазонами, циклические вычисления и управление временными функциями.
Ниже приведён подробный разбор ключевых методов
gsap.utils.
gsap.utils.random()Метод random позволяет получать случайные значения. Он
поддерживает как диапазоны чисел, так и массивы, возвращая случайный
элемент.
Синтаксис:
gsap.utils.random(min, max, rounding?, returnFunction?);
gsap.utils.random(array);
Параметры:
min и max – числовой диапазон.rounding – функция округления (например,
Math.round, Math.floor).returnFunction – если true, возвращается
функция, которая при каждом вызове возвращает новое случайное
значение.array – массив значений для случайного выбора.Примеры:
gsap.utils.random(0, 100); // возвращает случайное число между 0 и 100
gsap.utils.random(0, 10, Math.floor); // случайное целое число от 0 до 10
const rand = gsap.utils.random([1, 2, 3, 4]); // случайный элемент массива
Использование с returnFunction удобно при создании
повторяющихся анимаций, где нужно динамически менять параметры.
gsap.utils.snap()Метод snap упрощает привязку числовых значений к сетке
или заданным шагам.
Синтаксис:
gsap.utils.snap(snapValue, value);
Параметры:
snapValue – может быть числом, массивом или
функцией.value – исходное значение, которое нужно
«привязать».Примеры:
gsap.utils.snap(10, 37); // возвращает 40, ближайшее кратное 10
gsap.utils.snap([0, 50, 100], 77); // возвращает 100, ближайшее из массива
snap часто используется для привязки координат объектов
или значений CSS к сетке, что полезно при разработке интерфейсов.
gsap.utils.interpolate()Метод для линейной интерполяции между значениями, включая числа, цвета и массивы.
Синтаксис:
gsap.utils.interpolate(start, end, progress);
start и end – начальное и конечное
значения.progress – число от 0 до 1, обозначающее процент
прогресса интерполяции.Примеры:
gsap.utils.interpolate(0, 100, 0.5); // 50
gsap.utils.interpolate([0, 0], [100, 100], 0.5); // [50, 50]
Можно использовать для плавного изменения свойств объектов в анимации.
gsap.utils.wrap()Метод wrap циклически обрабатывает числа или массивы,
обеспечивая «закольцованное» поведение.
Синтаксис:
gsap.utils.wrap(min, max, value);
gsap.utils.wrap(array, value);
Примеры:
gsap.utils.wrap(0, 360, 370); // 10
gsap.utils.wrap([0, 1, 2], 4); // 1
wrap полезен для повторяющихся анимаций, таких как
вращение объектов или циклическое переключение изображений.
gsap.utils.clamp()Метод clamp ограничивает число заданным диапазоном.
Синтаксис:
gsap.utils.clamp(min, max, value);
Примеры:
gsap.utils.clamp(0, 100, 150); // 100
gsap.utils.clamp(0, 100, -20); // 0
Используется для предотвращения выхода значений за допустимые пределы, например, при управлении координатами элементов.
gsap.utils.unitize()Метод unitize автоматически добавляет единицы измерения
к числовым значениям.
Синтаксис:
gsap.utils.unitize(func, unit);
func – функция, возвращающая число.unit – строка с единицей измерения (например,
"px", "%").Примеры:
const px = gsap.utils.unitize(n => n * 2, "px");
px(10); // "20px"
Упрощает работу с CSS-свойствами, где требуются единицы измерения.
gsap.utils.pipe()Метод pipe создаёт цепочку функций, где выход одной
функции становится входом следующей.
Синтаксис:
gsap.utils.pipe(fn1, fn2, fn3, ...);
Примеры:
const process = gsap.utils.pipe(
n => n * 2,
n => n + 5
);
process(10); // (10*2)+5 = 25
Используется для сложных вычислений параметров анимации без многократного промежуточного хранения значений.
gsap.utils.shuffle()Метод shuffle перемешивает массив, создавая случайный
порядок элементов.
Синтаксис:
gsap.utils.shuffle(array);
Примеры:
gsap.utils.shuffle([1, 2, 3, 4, 5]); // [3, 1, 5, 2, 4] — порядок каждый раз другой
Полезно для анимаций, где элементы должны появляться в случайной последовательности.
gsap.utils.splitColor()Метод для разбора цветовых значений и получения компонентов RGBA или HSLA.
Синтаксис:
gsap.utils.splitColor(color);
Примеры:
gsap.utils.splitColor("rgb(255,0,0)"); // {r:255, g:0, b:0, a:1}
gsap.utils.splitColor("#00ff00"); // {r:0, g:255, b:0, a:1}
Используется при интерполяции цветов в анимациях и создании динамических эффектов.
gsap.utils.normalize()Метод normalize преобразует число из диапазона
[min, max] в [0, 1].
Синтаксис:
gsap.utils.normalize(min, max, value);
Примеры:
gsap.utils.normalize(0, 100, 50); // 0.5
gsap.utils.normalize(-50, 50, 0); // 0.5
Часто используется для приведения значений к удобному диапазону при работе с прогрессами анимации.
Эти методы gsap.utils являются базовыми строительными
блоками для создания сложных анимаций, оптимизации кода и упрощения
работы с динамическими значениями в JavaScript. Их использование
сокращает количество вспомогательных функций и повышает читаемость кода,
делая анимацию более управляемой и предсказуемой.