В библиотеке GSAP (GreenSock Animation Platform) ключевым инструментом для управления анимацией является способность наследовать значения от родительских объектов или предыдущих анимаций. Это позволяет создавать сложные последовательности анимаций, минимизируя дублирование кода и обеспечивая консистентность динамики элементов.
inheritСвойство inherit в GSAP используется для того, чтобы
анимационный объект автоматически принимал значения от предыдущих
состояний или заданных базовых конфигураций. Оно работает как указание
«использовать текущее значение родителя или предыдущей анимации». В
контексте GSAP это особенно полезно для следующих случаев:
Пример базового использования:
gsap.to(".child", {
x: "inherit", // Использует текущую координату x родителя
y: "inherit", // Наследует y
duration: 1
});
В этом примере .child автоматически принимает значения
координат родителя. Если родитель перемещается с помощью GSAP, дочерний
элемент будет двигаться синхронно.
GSAP поддерживает наследование трансформаций через свойства
scale, rotation, x,
y, skew и другие. Ключевой момент:
inherit не является абсолютным значением, оно всегда
рассчитывается относительно текущего состояния родителя:
gsap.to(".child", {
scale: "inherit", // масштабируется относительно родителя
rotation: "inherit", // поворачивается вместе с родителем
duration: 2
});
При изменении scale родителя дочерний элемент
автоматически адаптируется, что позволяет создавать эффект «сцепленных»
объектов без ручного пересчета значений.
inherit в сложных временных линияхGSAP Timeline (gsap.timeline()) тесно интегрируется с
наследованием. Путем применения inherit можно добиться
согласованной анимации нескольких элементов внутри одной временной
линии:
const tl = gsap.timeline();
tl.to(".parent", { x: 100, duration: 1 })
.to(".child", { x: "inherit", duration: 1 }, "<"); // стартует одновременно с родителем
Здесь дочерний элемент .child наследует смещение
родителя, и при изменении позиции .parent синхронно
сдвигается .child.
Для CSS-свойств, таких как color,
backgroundColor, opacity, inherit
может использоваться для динамического наследования стилей, определённых
в родительском элементе или в начальных настройках:
gsap.to(".child", {
color: "inherit", // цвет текста дочернего элемента соответствует родителю
backgroundColor: "inherit", // фон наследуется
duration: 1
});
GSAP вычисляет промежуточные значения и плавно анимирует переход, используя текущие свойства DOM, что позволяет избежать резких скачков.
inherit можно комбинировать с относительными значениями
(+=, -=) для создания сложных динамических
эффектов:
gsap.to(".child", {
x: "inherit+=50", // наследует x родителя и добавляет 50px
rotation: "inherit-15", // наследует вращение и уменьшает на 15°
duration: 1.5
});
Такой подход позволяет строить анимации, где элементы реагируют на движение родителя, но сохраняют индивидуальные смещения.
inherit всегда ориентирован на текущие свойства
родителя или предыдущие значения элемента, а
не на абсолютные координаты или статические значения.inherit необходимо учитывать порядок
анимаций: наследуемое значение вычисляется на момент запуска
анимации.inherit может не иметь эффекта, в таком случае GSAP
использует текущие CSS-свойства как базу.Использование inherit делает анимацию в GSAP гибкой и
модульной, позволяя создавать сложные визуальные эффекты без повторного
указания каждого значения вручную. Это особенно важно для динамических
интерфейсов, где множество элементов должны синхронно реагировать на
взаимодействие пользователя или события на странице.