--- category: Animation --- # useAnimate Reactive [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). ## Usage ### Basic Usage The `useAnimate` function will return the animate and its control function. ```vue ``` ### Custom Keyframes Either an array of keyframe objects, or a keyframe object, or a `ref`. See [Keyframe Formats](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats) for more details. ```ts import { useAnimate } from '@vueuse/core'; import { useTemplateRef } from 'vue'; const el = useTemplateRef('el'); // ---cut--- const keyframes = { transform: 'rotate(360deg)' }; // Or const keyframes = [{ transform: 'rotate(0deg)' }, { transform: 'rotate(360deg)' }]; // Or const keyframes = ref([ { clipPath: 'circle(20% at 0% 30%)' }, { clipPath: 'circle(20% at 50% 80%)' }, { clipPath: 'circle(20% at 100% 30%)' }, ]); useAnimate(el, keyframes, 1000); ``` ## Type Declarations ```ts export interface UseAnimateOptions extends KeyframeAnimationOptions, ConfigurableWindow { /** * Will automatically run play when `useAnimate` is used * * @default true */ immediate?: boolean; /** * Whether to commits the end styling state of an animation to the element being animated * In general, you should use `fill` option with this. * * @default false */ commitStyles?: boolean; /** * Whether to persists the animation * * @default false */ persist?: boolean; /** * Executed after animation initialization */ onReady?: (animate: Animation) => void; /** * Callback when error is caught. */ onError?: (e: unknown) => void; } export type UseAnimateKeyframes = MaybeRef; export interface UseAnimateReturn { isSupported: ComputedRef; animate: ShallowRef; play: () => void; pause: () => void; reverse: () => void; finish: () => void; cancel: () => void; pending: ComputedRef; playState: ComputedRef; replaceState: ComputedRef; startTime: WritableComputedRef; currentTime: WritableComputedRef; timeline: WritableComputedRef; playbackRate: WritableComputedRef; } /** * Reactive Web Animations API * * @see https://vueuse.org/useAnimate * @param target * @param keyframes * @param options */ export declare function useAnimate( target: MaybeComputedElementRef, keyframes: UseAnimateKeyframes, options?: number | UseAnimateOptions, ): UseAnimateReturn; ```