2 Maret 2026 1 min read
animasi-dengan-framer-motion
Bukan cuma fade-in. Teknik animasi layout, gesture, dan scroll-triggered yang bikin UI terasa hidup — tanpa bikin motion sickness.
framer-motionanimationreactux
NurikhsanFull-stack Developer & UI Designer
UI modern gak lengkap tanpa animasi. Ada fine line antara "fluid" dan "annoying". Kuncinya: animasi harus terasa sebagai respons, bukan gangguan.
3 pola utama di codebase ini
1. Scroll-triggered entrance
<motion.div
initial={{ opacity: 0, y: 18 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: "-80px" }}
transition={{ duration: 0.65, ease: "easeOut" }}
/>Komponen reveal saat masuk viewport. once: true biar gak replay. margin: -80px biar trigger sebelum benar-benar kelihatan.
2. Custom cubic bezier
ease: [0.23, 1, 0.32, 1] — overshoot halus, gerakan terasa snappy tanpa bouncing.
3. Layout animation
<motion.div layout>{children}</motion.div>Auto-animate perubahan posisi dan ukuran antar re-render.
Kapan gak usah animasi
- Loading skeleton — bikin nunggu terasa lebih lama
- Data table panjang — bikin motion sickness
- User disable motion di OS — cek prefers-reduced-motion
import { useReducedMotion } from "framer-motion"
const shouldReduce = useReducedMotion()
<motion.div animate={shouldReduce ? { opacity: 1 } : { opacity: 1, y: 0 }} />