В anime.js интерполяция цветов является мощным инструментом для создания плавных переходов между различными цветами элементов на веб-странице. Библиотека поддерживает большинство стандартных CSS-форматов цвета: hex (#RRGGBB, #RGB), rgb(), rgba(), hsl(), hsla(). При анимации цветовых свойств библиотека автоматически преобразует их в числовые значения, что позволяет выполнять корректную интерполяцию.
Пример базовой анимации цвета:
anime({
targets: '.box',
backgroundColor: '#FF0000', // конечный цвет
duration: 2000,
easing: 'linear'
});
В этом случае anime.js плавно изменяет текущий фон элемента
.box на красный (#FF0000) за 2 секунды.
Для создания последовательности цветовых изменений можно использовать массивы цветов. Библиотека будет последовательно интерполировать значения между каждым элементом массива:
anime({
targets: '.circle',
backgroundColor: ['#FF0000', '#00FF00', '#0000FF'],
duration: 3000,
loop: true,
easing: 'easeInOutQuad'
});
Здесь .circle плавно изменяет цвет от красного к
зелёному, затем к синему, и цикл повторяется бесконечно.
Для анимации прозрачных цветов применяется формат rgba()
или hsla(). Важно, что anime.js корректно интерполирует не
только цветовые каналы RGB, но и альфа-канал:
anime({
targets: '.fade-box',
backgroundColor: ['rgba(255,0,0,1)', 'rgba(0,0,255,0.5)'],
duration: 2500,
easing: 'easeOutCubic'
});
В данном примере элемент плавно изменяет цвет с полной непрозрачности красного до полупрозрачного синего.
anime.stagger для цветовДля групп элементов можно использовать stagger для
создания последовательного цветового эффекта с задержкой:
anime({
targets: '.list-item',
backgroundColor: anime.stagger(['#FF0000', '#00FF00', '#0000FF'], {start: 0, from: 'first'}),
duration: 1500,
easing: 'easeInOutSine'
});
Эта конструкция распределяет цвета по элементам списка, создавая эффект радужного перехода.
Anime.js поддерживает анимацию любых CSS-свойств, работающих с цветами:
color — текстbackgroundColor — фон элементаborderColor — цвет рамкиoutlineColor — цвет контураfill и stroke — для SVG-элементовПример анимации SVG:
anime({
targets: 'svg path',
stroke: ['#000000', '#FF69B4'],
duration: 2000,
easing: 'easeInOutQuart'
});
HSL (Hue, Saturation, Lightness) позволяет управлять оттенком, насыщенностью и яркостью отдельно, что делает переходы более контролируемыми:
anime({
targets: '.hsl-box',
backgroundColor: ['hsl(0, 100%, 50%)', 'hsl(120, 100%, 50%)'],
duration: 2500,
easing: 'easeInOutSine'
});
Такой подход особенно полезен для создания градиентов и динамических палитр, где важен именно тон цвета.
Интерполяция цвета может сочетаться с анимацией позиции, размеров, прозрачности и трансформаций для создания комплексных эффектов:
anime({
targets: '.animated-box',
backgroundColor: ['#FF6347', '#4682B4'],
translateX: 250,
scale: [1, 1.5],
opacity: [0.5, 1],
duration: 3000,
easing: 'easeInOutExpo'
});
Такой синтез визуальных эффектов позволяет создавать динамичные и плавные интерфейсные анимации.
loop: true и direction: 'alternate'.Интерполяция цветов в anime.js — гибкий инструмент для создания визуально выразительных анимаций. Возможность работы с различными цветовыми форматами, поддержка альфа-канала и интеграция с другими свойствами элементов делает библиотеку мощной для разработки современных UI и динамических графических интерфейсов.