ツール一覧 / AI活用ノート / GSAPの使い方入門|AIが書いたコードのタイミングを自分で直す
AIが書いたGSAPのコードを、to・from・timelineの3つで読めるようにします。速さ、重なり、時間差を変えるときに触る数字を早見表と図にまとめました。from()のちらつきの直し方と、2026年10月時点の商用ライセンスも載せています。
結論: まず
.to(と.from(のどちらかを見て、動く向きを確かめます。あとは触る数字を1つに絞れば、AIに頼み直さなくても直せます。
- 速さを変えたい →
duration(timelineなら1行目のdefaults)- 重なりや間を変えたい → 行の最後にある
"-=0.3"のような文字- from() で画面がちらつく → CSSの
visibility: hidden+autoAlpha
「見出しの出方、もう少しゆっくりで」。クライアントのこの一言で、AIが書いたGSAPのコードを開いて固まる。ここ、迷いますよね。
AIに頼み直すと、毎回コード全体が書き換わります。触る場所さえ分かれば、数字を1つ直すだけです。GSAP公式ドキュメントをもとに、その場所をまとめました。
gsap.to / gsap.from / gsap.timeline のどれが使われているかを見ます。これで動きの向きと順番が分かります。

| 書き方 | 何をするか | よく使う場面 |
|---|---|---|
gsap.to() |
今の状態から、指定した値へ動かす | ホバー、クリック後の移動 |
gsap.from() |
指定した値から、今の状態へ戻す | ページを開いたときの登場 |
gsap.timeline() |
複数の動きを順番にまとめる | ヒーローの一連の演出 |
← 表は横にスクロールできます →
数字が書かれていなければ、duration(動く時間)は0.5秒、ease(動きの緩急)は "power1.out" です。AIのコードが「なんだか速い」なら、たいていこの初期値のまま動いています。

「何を変えたいか」から引けば、触る場所は1つに絞れます。
| やりたいこと | 触る場所 | 例 |
|---|---|---|
| 1つの動きを速く・遅く | duration |
0.5 → 1.2 |
| 動き始めを遅らせる | delay(単体)/position引数(timeline内) |
delay: 0.3 |
| 前の動きと重ねる | position引数 | "-=0.3" / "<" / "<0.2" |
| 間をあける | position引数 | "+=0.5" |
| まとめてテンポを変える | defaults / timeScale() |
defaults: { duration: 0.8 } |
| 順番に出る間隔 | stagger |
0.1 → 0.2 |
| 動きの緩急 | ease |
"power1.out" → "power3.out" |
← 表は横にスクロールできます →
「position引数」は、.to() や .from() のカッコの最後に書く文字のことです。
7つのうち、覚える価値が一番高いのはposition引数だと考えています。timelineの演出が「何か変」なとき、原因はほとんどここにあるからです。
ヒーローの登場アニメを例に、数字ごとの意味をコメントで書き込みました。
// 1行目: ここに書いた duration と ease が、下の3つ全部に効く
const tl = gsap.timeline({ defaults: { duration: 0.8, ease: "power2.out" } });
tl.from(".hero-title", { y: 40, opacity: 0 }) // 40px下から、透明な状態で出てくる
.from(".hero-text", { y: 20, opacity: 0 }, "-=0.3") // 見出しが終わる0.3秒前に始まる
.from(".hero-card", { y: 30, opacity: 0, stagger: 0.15 }, "<0.2");
// ↑ 本文が始まった0.2秒後にカードが動き出す。カードは1枚ごとに0.15秒ずつずれる
| 直したいこと | 触る場所 |
|---|---|
| 全体をゆっくりにしたい | 1行目の duration: 0.8 を 1.0 にする |
| 見出しと本文をもっと重ねたい | "-=0.3" を "-=0.5" にする |
| カードが出る間隔を詰めたい | stagger: 0.15 を 0.08 にする |
| 全部まとめて半分の速さで確認したい | 最後に tl.timeScale(0.5) を足す |
← 表は横にスクロールできます →
defaults より、各行に個別に書いた値が優先されます。見出しだけ速くしたいなら、その行に duration: 0.5 を足せば済みます。
地味に見落としがちですが、AIのコードを開いたら最初に defaults を探してください。「各行に数字が無いのに遅い」という謎は、たいていここで解けます。
"-=0.3" や "<" は何? position引数を図で見る省略すると前の動きの後ろにつながります。+= で間があき、-= で重なり、< で同時に始まります。
| 書き方 | 意味 |
|---|---|
省略("+=0" と同じ) |
前の動きの終わりにつなぐ |
"+=0.5" |
終わってから0.5秒あける |
"-=0.3" |
終わる0.3秒前から重ねる |
"<" |
直前の動きと同時に始める |
">" |
直前の動きが終わったときに始める |
"<0.2" |
直前の動きが始まってから0.2秒後に始める |
2 |
タイムラインの開始から2秒の位置に置く |
← 表は横にスクロールできます →
読み違えやすいのが "<3" です。「3秒前」ではなく、直前の動きが始まってから3秒後を指します。
"-=25%" のような割合での指定もあります。こちらはGSAP 3.7.0以降で使えます。

ちらつくならCSSで先に隠す。連打で崩れるならfromTo()に書き換える。この2つで足ります。
visibility: hidden; を付け、GSAPは autoAlpha で表示します(opacityとvisibilityを同時に扱う指定です)fromTo() で開始値と終了値の両方を書く方法をすすめていますimmediateRender: false を足します「登場アニメ」と頼むと、AIはfrom() で書いてくることが多いはずです。クリックで何度も動かす部品なら、最初から「fromToで書いて」と頼むほうが手戻りは少ないと考えています。
古い書き方でもまだ動きます。ただ、GSAP 3の書き方にそろえると読みやすくなります。
| 古い書き方(v2) | 今の書き方(v3) |
|---|---|
TweenMax.to(".a", 2, { x: 100 }) |
gsap.to(".a", { duration: 2, x: 100 }) |
new TimelineMax() |
gsap.timeline()(new は要らない) |
Power2.easeOut |
"power2.out"("power2" だけでも同じ意味) |
← 表は横にスクロールできます →
公式の移行ガイドにも「The old syntax still works(古い書き方もまだ動く)」とあります。
とはいえ、秒数が2番目に来る書き方だと duration の場所が一目で分かりません。見つけたら書き換えておくほうが、あとで自分が助かります。
緩急を目で見て選びたいなら、公式のEase Visualizerが便利です。カーブをグラフ・時計・箱の3つの見え方で確かめられます。


「もっといい感じに」ではなく、どこをどう変えるかを用語つきで書きます。
"-=0.3")」stagger を今の半分に)」defaults のdurationを1.0にして、ほかは変えないで」コツは最後に「ほかは変えないで」と付けること。これが無いと、AIが関係ない行まで書き直すことがあります。
2026年10月10日時点では、商用の案件でも無料です。以前は有料だったプラグインも含まれます。
| 項目 | 内容(2026-10-10時点) |
|---|---|
| ライセンス | Standard License(2025年4月30日発効) |
| 料金 | プラグインを含めて無料。Webflowを使っているかどうかは関係なし |
| できないこと | Webflowのアニメーション機能と競合する、ノーコードのアニメーション作成ツールの開発(書面での同意がない場合) |
| AIでのコード生成 | 公式FAQで、ChatGPTやCursorなどでの生成は禁止に当たらないとされている |
← 表は横にスクロールできます →
数年前の解説には「条件によってはBusiness Licenseが必要」とあるものも残っています。これは無料化より前の情報です。
ライセンスは改定されることがあります。納品前に公式のStandard Licenseを一度見ておくと安心です。
Q. 試すだけなら、どうやって読み込めばいい?
scriptタグを1行書けば動きます。npmなら npm install gsap です。
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
2026年10月10日時点の最新は3.15.0です。最新版は公式のInstallationページでご確認ください。ScrollTriggerなどのプラグインは、gsap.registerPlugin() で登録してから使います。
Q. 全体を少しだけゆっくりにしたい。全部の行を直すしかない?
その必要はありません。timelineの defaults の duration を変えるか、tl.timeScale(0.8) のように全体の速さを変えます。timeScaleは1が通常の速さで、小さいほどゆっくりになります。
Q. 動きが苦手な人への配慮はどう書く?
gsap.matchMedia() に (prefers-reduced-motion: reduce) を登録します。OSで「視差効果を減らす」をオンにしている人には、動きを止めたり短くしたりできます。条件に合わなくなると、中のアニメーションは自動で元に戻ります。
to / from / timeline のどれかを見て、動きの向きと順番をつかむduration、重なりはposition引数、時間差は stagger。触るのはほぼこの3つ"power1.out"。最初に defaults の有無を確かめるvisibility: hidden + autoAlpha、連打で崩れるなら fromTo()次にAIのコードを開いたら、"-=0.3" を "-=0.5" に変えて再読み込みしてみてください。重なり方の変化を一度見ておくと、AIへの頼み方も具体的になります。
この記事は、Webサイトの動く部品集 AETHER Motion の制作チームが書いています。