React'te Framer Motion ile İlk Animasyonunuz
Bir bileşeni birkaç satırda nasıl hayata geçirirsiniz — temel kavramlara pratik bir giriş.
React projelerinde animasyon eklemek genelde göründüğünden daha karmaşık hâle gelir — state yönetimi, CSS class'ları, zamanlama... Framer Motion bu karmaşıklığın çoğunu ortadan kaldırıyor.
Canlı Yaylanma (Spring) Fiziği
Aşağıdaki interaktif stüdyoda Framer Motion'ın type: "spring" fizik motorunu canlı olarak deneyebilir, sertlik (stiffness) ve sönümleme (damping) değerleriyle oynayabilirsiniz:
İnteraktif Yay Fiziği Stüdyosu
Değerleri değiştirin ve yaylanmayı canlı izleyin
transition: {
type: "spring",
stiffness: 300,
damping: 15,
mass: 1
}Temel kurulum
npm install framer-motion
İlk animasyonunuz
Normal bir div yerine motion.div kullanmak, ona initial, animate ve transition gibi özellikler kazandırır:
import { motion } from "framer-motion";
function WelcomeCard() {
return (
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ type: "spring", stiffness: 300, damping: 20 }}
>
Merhaba!
</motion.div>
);
}
Bu kod, bileşen ekrana geldiğinde onu 20px aşağıdan, saydam bir şekilde başlatıp asıl konumuna yumuşakça getiriyor.
Hover ve tıklama durumları
whileHover ve whileTap, ayrı bir state tanımlamadan etkileşim animasyonu eklemenizi sağlar:
<motion.button
whileHover={{ scale: 1.05 }}
whileTap={{ scale: 0.95 }}
>
Gönder
</motion.button>
Giriş/çıkış animasyonları: AnimatePresence
Bir öğe DOM'dan kaldırılırken de animasyon oynatmak isterseniz (örneğin bir modal kapanırken), AnimatePresence devreye girer:
import { AnimatePresence, motion } from "framer-motion";
function Modal({ isOpen }: { isOpen: boolean }) {
return (
<AnimatePresence>
{isOpen && (
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
>
İçerik
</motion.div>
)}
</AnimatePresence>
);
}
AnimatePresence, öğe kaldırılmadan önce exit animasyonunun bitmesini bekler — bu sayede modal aniden kaybolmak yerine yumuşakça kapanır.
Küçük bir tavsiye
Her yere animasyon eklemek cazip gelebilir, ama en iyi animasyonlar genelde fark edilmeyenlerdir. Amaç göz kamaştırmak değil, arayüzün mantıklı ve akıcı hissettirmesini sağlamaktır.