Communitygithub.com

phido0410/animejs

Anime.js v4 アニメーションライブラリ(animate, createTimeline, stagger, svg.createDrawable / morphTo / createMotionPath, createScope, utils)。ユーザーが Anime.js / animejs を尋ねた場合や、DOM、SVG、CSS変数、プレーンなJSオブジェクトの軽量JSアニメーションが必要な場合に使用します。v4のAPIはv3とは異なります。

animejs とは?

このスキルは、Anime.js v4 を用いて DOM 要素、SVG、CSS 変数、プレーンな JavaScript オブジェクトをアニメーションさせるためのものです。`animate` 関数による簡潔なアニメーション定義、`createTimeline` によるタイムライン制御、`stagger` による段階的遅延、SVG の描画・モーフィング・モーションパス機能、再生制御(再生、一時停止、シーク、リバース)、React の `createScope` によるスコープ管理など、v4 の主要機能を網羅しています。v3 から v4 への主要な API 変更(例:`anime({...})` から `animate(...)` への変更)も分かりやすくまとめられており、古いチュートリアルに頼らず最新の v4 を使いこなせます。Remotion との併用に関する注意点も含まれており、ビデオ制作でのフレーム同期方法も解説しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/phido0410/claude-video-skills/tree/HEAD/skills/animejs

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Anime.js v4

2026-10 確認: animejs 4.5。

npm i animejs
import { animate, createTimeline, stagger, svg, utils, createScope } from 'animejs'

v3 → v4(古いチュートリアルは v3 を使用)

v3v4
anime({ targets, ... })animate(targets, { ... })
easing: 'easeOutQuad'ease: 'outQuad'('inOutExpo'、'inOut(3)'、...)
anime.timeline()createTimeline()
direction: 'alternate'alternate: true
update、complete、beginonUpdate、onComplete、onBegin

持続時間と遅延はミリ秒単位です(GSAPは秒単位)。

animate

animate('.square', {
  x: 320,                       // translateX の省略形
  rotate: { from: -180 },
  opacity: [0, 1],              // [from, to]
  duration: 1250,
  delay: stagger(65, { from: 'center' }),
  ease: 'inOutQuint',
  loop: true,
  alternate: true,
})

ターゲット:CSSセレクター、要素、またはプレーンオブジェクト(animate(obj, { value: 100, onUpdate: () => draw(obj.value) }))。

タイムライン

const tl = createTimeline({ defaults: { duration: 600, ease: 'outExpo' } })
tl.add('.title', { opacity: [0, 1], y: [40, 0] })
  .add('.sub',   { opacity: [0, 1] }, '-=300')       // 前の終了の300ミリ秒前
  .add('.dot',   { scale: [0, 1], delay: stagger(80) }, '<<') // 前の開始と同時

位置指定:100 絶対ミリ秒 ・ '+=100' / '-=100' 前の終了を基準に相対指定 ・ '<' 前の終了 ・ '<<' 前の開始 ・ '<<+=250' ・ 'Label'(tl.label('Label') で設定) ・ stagger(10)。

SVG

animate(svg.createDrawable('.line'), { draw: ['0 0', '0 1'], duration: 2000 }) // ストローク描画、値0~1「開始 終了」
animate('#shapeA', { d: svg.morphTo('#shapeB'), duration: 800 })                // パスAをBにモーフィング
animate('.car', { ...svg.createMotionPath('#road'), duration: 4000 })            // パスに沿って移動(x, y, rotate)

再生/スクラブ

autoplay: false を設定後、.play()、.pause()、.restart()、.reverse()、.seek(ms)、.complete()、.cancel()、.revert()(インラインスタイルをすべて元に戻す)を使用。

React

const root = useRef(null)
useEffect(() => {
  const scope = createScope({ root }).add(() => {
    animate('.box', { x: 200 })     // セレクターはroot内にスコープされる
  })
  return () => scope.revert()
}, [])

動画向け

Anime.jsは独自のクロックで動作します。Remotion内では、一時停止状態で構築し、フレームごとにシークしてください。自動再生は絶対にさせないでください。

const frame = useCurrentFrame()
const { fps } = useVideoConfig()
const tl = useRef(null)
useLayoutEffect(() => {
  tl.current = createTimeline({ autoplay: false }).add('.title', { y: [40, 0], opacity: [0, 1] })
  return () => tl.current.revert()
}, [])
useLayoutEffect(() => { tl.current.seek((frame / fps) * 1000) }, [frame, fps])

単純な動きには Remotion 自身の interpolate / spring を優先し、SVGヘルパー(draw, morph, motion path)や stagger が実際の作業を削減する場合に Anime.js を利用してください。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

関連スキル