React Academy · Pelajaran

Komponen Motion & Animasi Asas

Gantikan div dengan motion.div dan gunakan prop animate, initial serta exit untuk animasi ringkas.

Pelajaran 1 daripada 414 langkah

Komponen Motion & Animasi Asas ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah Framer Motion?

Framer Motion ialah pustaka animasi React. Gantikan elemen HTML dengan padanan motion.* untuk menambah animasi deklaratif melalui sifat dan bukannya bingkai utama CSS.

Pemasangan

Pasang Framer Motion dan import motion daripadanya.

npm install framer-motion

import { motion } from 'framer-motion';

Animasi Pertama Anda

Gantikan <div> dengan <motion.div> dan tambahkan sifat initial, animate serta transition.

<motion.div
  initial={{ opacity: 0, y: -20 }}
  animate={{ opacity: 1, y: 0 }}
  transition={{ duration: 0.4 }}
>
  Hello, Framer Motion!
</motion.div>

Sifat Permulaan

initial mentakrifkan keadaan permulaan animasi — tempat elemen bermula sebelum dianimasikan kepada animate.

// Fade in from left
<motion.div
  initial={{ opacity: 0, x: -50 }}
  animate={{ opacity: 1, x: 0 }}
/>

// Scale up from center
<motion.button
  initial={{ scale: 0 }}
  animate={{ scale: 1 }}
/>

Sifat Animasi

animate mentakrifkan keadaan sasaran. Framer Motion menginterpolasi antara initial dan animate menggunakan fizik pegas atau pelicinan yang ditentukan.

<motion.h1
  initial={{ opacity: 0 }}
  animate={{ opacity: 1, color: '#4f46e5' }}
  transition={{ duration: 0.6, ease: 'easeOut' }}
>
  Welcome
</motion.h1>

Pilihan Peralihan

Sifat transition mengawal cara animasi bergerak: duration, ease, delay, type ('spring' | 'tween' | 'inertia').

transition={{
  type: 'spring',
  stiffness: 300,
  damping: 20,
  delay: 0.2,
}}

Bingkai Utama dalam Animasi

Hantar tatasusunan kepada mana-mana nilai yang dianimasikan untuk mencipta animasi bingkai utama yang melalui berbilang keadaan.

<motion.div
  animate={{ x: [0, 30, 0] }}
  transition={{ duration: 1, repeat: Infinity, ease: 'easeInOut' }}
/>

Keadaan Lerap dan Ketik

whileHover dan whileTap mentakrifkan keadaan animasi untuk interaksi melayang dan menekan, lalu kembali secara automatik apabila gerak isyarat berakhir.

<motion.button
  whileHover={{ scale: 1.05, backgroundColor: '#4f46e5' }}
  whileTap={{ scale: 0.95 }}
  style={{ backgroundColor: '#6366f1' }}
>
  Press me
</motion.button>

Menganimasikan Semasa Menatal dengan inView

Gunakan sifat whileInView untuk mencetuskan animasi apabila elemen ditatal masuk ke dalam ruang pandang.

<motion.section
  initial={{ opacity: 0, y: 40 }}
  whileInView={{ opacity: 1, y: 0 }}
  viewport={{ once: true, amount: 0.3 }}
  transition={{ duration: 0.5 }}
>
  <h2>Revealed on scroll</h2>
</motion.section>

Sifat Keluar dengan AnimatePresence

exit mentakrifkan animasi apabila komponen dinyahlekarkan. Ia hanya berfungsi apabila dibungkus dalam <AnimatePresence>.

import { motion, AnimatePresence } from 'framer-motion';

<AnimatePresence>
  {isVisible && (
    <motion.div
      key="modal"
      initial={{ opacity: 0 }}
      animate={{ opacity: 1 }}
      exit={{ opacity: 0, scale: 0.95 }}
    />
  )}
</AnimatePresence>

useAnimate untuk Kawalan Imperatif

useAnimate() mengembalikan rujukan scope dan fungsi animate untuk kawalan animasi secara program di luar sistem sifat deklaratif.

import { useAnimate } from 'framer-motion';

function ShakeButton() {
  const [scope, animate] = useAnimate();
  const handleClick = async () => {
    await animate(scope.current, { x: [-10, 10, -10, 0] }, { duration: 0.3 });
  };
  return <motion.button ref={scope} onClick={handleClick}>Shake</motion.button>;
}

Mengurangkan Gerakan

Hormati keutamaan gerakan dikurangkan pengguna dengan cangkuk useReducedMotion().

import { useReducedMotion } from 'framer-motion';

function AnimatedCard() {
  const shouldReduce = useReducedMotion();
  return (
    <motion.div
      animate={{ opacity: 1, y: shouldReduce ? 0 : -20 }}
    />
  );
}

Semakan Pantas

Sifat Framer Motion manakah yang mentakrifkan keadaan animasi yang patut dicapai oleh komponen, iaitu sasaran komponennya?

Ringkasan

Gantikan elemen HTML dengan padanan motion.*. Gunakan initial untuk keadaan permulaan, animate untuk sasaran, transition untuk pemasaan, whileHover/whileTap untuk gerak isyarat, dan whileInView untuk animasi yang dicetuskan semasa menatal.

Percuma untuk bermula

Pelajari React dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
88
Pelajaran
324

Soalan Lazim

Adakah pelajaran “Komponen Motion & Animasi Asas” percuma?

Ya — teks penuh “Komponen Motion & Animasi Asas” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Komponen Motion & Animasi Asas”?

Gantikan div dengan motion.div dan gunakan prop animate, initial serta exit untuk animasi ringkas. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan React Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Komponen Motion & Animasi Asas” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Komponen Motion & Animasi Asas
  2. Varian untuk Animasi Teratur
  3. Animasi Gerak Isyarat: Hover, Ketik & Seret
  4. Animasi Reka Letak & AnimatePresence
← Kembali ke React Academy