響應式
matchMedia + 減少動態
gsap.matchMedia() 依斷點與 prefers-reduced-motion 建立/自動 revert 動畫。
導讀
桌面/手機用不同位移,使用者偏好減少動態時 duration: 0——matchMedia 會自動清掉不匹配的動畫。
- 看什麼
- HUD 顯示目前命中的 condition;縮視窗或開關 reduce 模擬。
- 怎麼試
- 縮到窄寬度看 rotation 變小;勾選 reduce 看動畫瞬間歸零。
Skill 對應:gsap.matchMedia, conditions, prefers-reduced-motion, mm.revert
mm.add(conditions, (ctx) => {...}):不匹配時自動 revert- 務必處理
prefers-reduced-motion(duration: 0 或跳過) - 不要在 matchMedia 裡再巢狀
gsap.context() - 元件卸載呼叫
mm.revert()
const mm = gsap.matchMedia();
mm.add({
isDesktop: "(min-width: 800px)",
reduceMotion: "(prefers-reduced-motion: reduce)"
}, (ctx) => {
const { isDesktop, reduceMotion } = ctx.conditions;
gsap.to(".box", {
rotation: isDesktop ? 360 : 180,
duration: reduceMotion ? 0 : 1.2
});
});matchMedia
mm
- viewport
- —
- isDesktop (≥800px)
- —
- reduceMotion
- —
- applied rotation / duration
- —
縮放瀏覽器寬度會自動切條件;也可按「模擬 reduce-motion」強制 duration: 0。