国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah hujung hadapan web tutorial js Animasi Reaksi Tanpa Usaha: Panduan untuk Gerak Penggubah

Animasi Reaksi Tanpa Usaha: Panduan untuk Gerak Penggubah

Jan 23, 2025 pm 10:39 PM

Effortless React Animation: A Guide to Framer Motion

TL;DR: Catatan blog ini menyediakan panduan komprehensif menggunakan Framer Motion, perpustakaan animasi React. Ia merangkumi konsep utama seperti komponen gerakan, varian dan peralihan serta menyediakan contoh praktikal untuk mencipta butang pudar, bar sisi slaid masuk, mod boleh seret dan animasi flip kad.

Keutamaan pertama kami sebagai pembangun bahagian hadapan ialah mencipta aplikasi web yang memastikan pengguna sentiasa terlibat. Ini boleh dilakukan dengan membuat halaman interaktif dan menyediakan pengalaman pengguna yang lebih baik.

Animasi menjadikan halaman anda interaktif; mereka membimbing pengguna dan menjadikan interaksi menarik. Pergerakan visual kecil pada halaman, seperti interaksi pengguna atau acara atau navigasi halaman, memberikan rasa kemeriahan, seperti kita berinteraksi dengan makhluk hidup yang bertindak balas terhadap tindakan kita.

Animasi, secara ringkasnya, ialah cara mengubah unsur secara visual dengan mengemas kini sifat atau dimensinya dari semasa ke semasa pada interaksi atau acara tertentu. Contohnya, penunjuk pemuatan yang menunjukkan bahawa tindakan anda sedang dijalankan.

Terdapat dua cara untuk menghidupkan elemen pada halaman web (dua cara untuk menukar sifat elemen).

  1. Melalui CSS, perpustakaan seperti Animate.css menyediakan satu set kelas animasi yang boleh ditambahkan pada elemen HTML.
  2. Melalui JavaScript, perpustakaan seperti Framer Motion memanipulasi sifat elemen DOM pada masa jalan melalui kod.

Dalam artikel ini, kami akan meneroka Framer Motion, salah satu perpustakaan paling popular untuk animasi. Ia memberikan kesederhanaan dan fleksibiliti serta direka bentuk untuk berfungsi dengan rangka kerja bahagian hadapan moden seperti React.

Kenapa Framer Motion?

Framer Motion ialah perpustakaan animasi sedia pengeluaran untuk React yang mencipta animasi mudah seperti peralihan dan interaksi berasaskan gerak isyarat yang kompleks melalui sintaks deklaratifnya. Ia menampilkan:

  • Kemudahan penggunaan: Framer Motion sangat mudah dan mudah digunakan, terima kasih kepada API dan kaedah intuitifnya.
  • Fleksibiliti: Ia boleh digunakan untuk mencipta animasi kompleks seperti pan, seret, cubit atau animasi mudah seperti pudar, peralihan.
  • Prestasi: Komponen gerakan dioptimumkan untuk prestasi, kerana ia dipaparkan di luar kitaran hayat React untuk berjalan lancar dan memastikan pengalaman pengguna yang lancar.
  • Komuniti dan Sokongan: Dokumen yang luas, set contoh yang besar dan penerimaan yang hebat oleh komuniti memudahkan untuk bermula.

Bermula dengan Framer Motion

Tambahkan perpustakaan Framer Motion pada projek anda menggunakan pengurus pakej npm atau benang.

npm install framer-motion

Atau

npm install framer-motion

Setelah kebergantungan dimuatkan, anda boleh memasukkan ini dalam projek anda untuk mencipta animasi interaktif.

yarn add framer-motion

Konsep asas

Komponen gerakan:

Framer Motion dilengkapi dengan senarai komponen gerakan untuk mencipta animasi 120fps. Ia menyediakan sokongan gerak isyarat yang mengandungi semua elemen HTML (seperti motion.div) dan elemen SVG biasa (seperti motion.square) yang merupakan komponen React khas yang boleh digunakan.

// On Client side
import { motion } from "motion/react"

// On Server-side 
import * as motion from "motion/react-client"

Prop & API:

Framer Motion menyediakan senarai API sebagai prop, seperti awal, animate dan keluar yang mentakrifkan tingkah laku animasi.

<motion.div className="card" />

Awal prop dinyalakan pada lekap komponen, animate dinyalakan apabila komponen dikemas kini dan prop keluar dinyalakan apabila komponen dinyahlekap. Rujuk panduan animasi Framer Motion yang lengkap untuk mendapatkan butiran lanjut.

Komponen gerakan adalah bebas daripada kitaran hayat Reacts atau kitaran render untuk prestasi yang lebih baik. Oleh itu, kita harus bergantung pada keadaan React untuk animasi, dan bukannya menggunakan nilai gerakan yang akan mengemas kini gaya tanpa mencetuskan pemaparan semula.

<motion.button
  initial={{opacity: 0}}
  animate={{opacity: 1}}
  transition={{duration: 1}}
  exit={{opacity: 0}}
>
  Click Me
</motion.button>

Varian termasuk:

  • listVariants: Mentakrifkan gelagat animasi untuk keseluruhan senarai, kami menghantar nilai varian pada prop yang akan mengakses sifat pada penembakannya. initial=”tersembunyi” dan animate=”kelihatan”. staggerChildren memastikan elemen kanak-kanak bernyawa dalam turutan.
  • itemVariants: Mentakrifkan gelagat animasi untuk item senarai.
  • Komponen motion.ul dan motion.li mewarisi varian untuk mencipta animasi yang diselaraskan.

Komponen tersuai: Mana-mana komponen React boleh ditukar kepada komponen gerakan dengan menghantarnya melalui fungsi motion.create().

import { motion, useMotionValue } from "framer-motion";

const MotionState = () => {
  const xPosition = useMotionValue(0);

  useEffect(() => {
    // It won’t trigger a re-render on the component
    const interval = setInterval(() => {
    xPosition.set(xPosition.get() + 100);
    }, 1000);

    return () => clearInterval(interval);
  }, []);

  return (
    <motion.div
   >



<p>In the previous example, the <strong>motion.div</strong> element will be translated by 100px on the x position (horizontally, translateX(100px)) at an interval of 1s.</p>

<p><strong>Variants:</strong> framer-motion provides support for the variants, which allows the reuse of animation configurations across multiple elements.<br>
</p>

<pre class="brush:php;toolbar:false">const AnimatedList = () => {
  const listVariants = {
    hidden: { opacity: 0, y: 20 },
    visible: {
       opacity: 1,
       y: 0,
       transition: {
           staggerChildren: 0.2,
      },
    },
  };

  const itemVariants = {
      visible: { opacity: 1 },
    hidden: { opacity: 0 },
  };

  return (
    <motion.ul initial="hidden" animate="visible" variants={listVariants}>
    {[1, 2, 3].map((item) => (
        <motion.li key={item} variants={itemVariants}>
        Item {item}
        </motion.li>
    ))}
    </motion.ul>
  );
};

Secara lalai, semua prop gerakan akan ditapis semasa menghantarnya ke komponen React. Animasi akan digunakan pada komponen, tetapi anda tidak boleh mengakses prop dalam React.

Untuk mengakses prop gerakan, hantar bendera forwardMotionProps: true sambil mencipta komponen gerakan.

const ReactComponent = (props) => {
  return <button {...props}>ClickMe>/button>;
};

const MotionComponent = motion.create(ReactComponent);

const FadingButton2 = () => {
  return (
    <MotionComponent
    initial={{ opacity: 0 }}
    animate={{ opacity: 1 }}
    exit={{ opacity: 0 }}
    transition={{ duration: 3 }}
    >
    Click Me
    </MotionComponent>
  );
};

Fungsi gerakan.create() juga menerima rentetan yang akan mencipta komponen gerakan elemen DOM tersuai.

const MotionComponent = motion.create(ReactComponent, {
  forwardMotionProps: true,
});

Nota: Elakkan menggunakan gerakan.create() dalam kaedah kitaran hayat React seperti (useEffect), kerana ini akan cipta komponen baharu setiap kali kaedah kitaran hayat dimatikan.

Sekarang anda mempunyai idea yang baik tentang cara Framer Motion berfungsi dan APInya, mari lihat beberapa contoh cara anda boleh menggunakannya untuk animasi biasa.

Contoh

Butang pudar

npm install framer-motion
  • awal: Menetapkan keadaan awal butang kelegapan:0, apabila elemen itu bukan port pandangan.
  • menghidupkan: Menetapkan keadaan butang kepada kelegapan:1 apabila elemen berada dalam port pandangan.
  • peralihan: Mengkonfigurasi peralihan animasi; butang akan mengambil masa satu saat untuk beralih daripada kelegapan:0 kepada kelegapan:1
  • keluar: Menetapkan keadaan butang apabila elemen keluar dari port pandangan.

Properti keluar berkuat kuasa hanya apabila dibalut dengan komponen AnimatePresence.

yarn add framer-motion

AnimatePresence memberi kesan kepada kanak-kanak langsung, iaitu komponen gerakan yang sedang dialih keluar daripada pokok komponen React.

Ini boleh berlaku apabila komponen sedang mengemas kini pada perubahan kitaran hayat (lekapkan, kemas kini, nyahlekap)

// On Client side
import { motion } from "motion/react"

// On Server-side 
import * as motion from "motion/react-client"

Perubahan kuncinya

<motion.div className="card" />

Kanak-kanak ditambah atau dialih keluar daripada senarai.

<motion.button
  initial={{opacity: 0}}
  animate={{opacity: 1}}
  transition={{duration: 1}}
  exit={{opacity: 0}}
>
  Click Me
</motion.button>

Bar sisi slaid masuk

import { motion, useMotionValue } from "framer-motion";

const MotionState = () => {
  const xPosition = useMotionValue(0);

  useEffect(() => {
    // It won’t trigger a re-render on the component
    const interval = setInterval(() => {
    xPosition.set(xPosition.get() + 100);
    }, 1000);

    return () => clearInterval(interval);
  }, []);

  return (
    <motion.div
   >



<p>In the previous example, the <strong>motion.div</strong> element will be translated by 100px on the x position (horizontally, translateX(100px)) at an interval of 1s.</p>

<p><strong>Variants:</strong> framer-motion provides support for the variants, which allows the reuse of animation configurations across multiple elements.<br>
</p>

<pre class="brush:php;toolbar:false">const AnimatedList = () => {
  const listVariants = {
    hidden: { opacity: 0, y: 20 },
    visible: {
       opacity: 1,
       y: 0,
       transition: {
           staggerChildren: 0.2,
      },
    },
  };

  const itemVariants = {
      visible: { opacity: 1 },
    hidden: { opacity: 0 },
  };

  return (
    <motion.ul initial="hidden" animate="visible" variants={listVariants}>
    {[1, 2, 3].map((item) => (
        <motion.li key={item} variants={itemVariants}>
        Item {item}
        </motion.li>
    ))}
    </motion.ul>
  );
};

Peralihan props memainkan peranan penting dalam animasi. Mereka mengawal cara animasi berkembang dari semasa ke semasa. Framer Motion menyokong berbilang sifat untuk animasi yang lancar.

  • tempoh: Panjang animasi (dalam saat)
  • kelewatan: Melambatkan permulaan animasi (dalam beberapa saat)
  • kemudahan: Satu set fungsi pelonggaran yang menyokong cara animasi akan berkembang ('ease', 'easeIn', 'easeInOut')

Modal Boleh Seret

Gerakan pembingkai juga menyokong animasi interaktif dengan gerak isyarat seperti tuding, ketik dan seret.

const ReactComponent = (props) => {
  return <button {...props}>ClickMe>/button>;
};

const MotionComponent = motion.create(ReactComponent);

const FadingButton2 = () => {
  return (
    <MotionComponent
    initial={{ opacity: 0 }}
    animate={{ opacity: 1 }}
    exit={{ opacity: 0 }}
    transition={{ duration: 3 }}
    >
    Click Me
    </MotionComponent>
  );
};

  • Halaman: Membungkus komponen kanak-kanak dengan animasi gerakan.
  • Awal, menghidupkan, & keluar: Mengendalikan penampilan dan kehilangan komponen pada navigasi halaman.

Kesimpulan

Terima kasih kerana membaca! Framer Motion ialah perpustakaan animasi berkuasa yang memudahkan untuk menambah animasi yang menakjubkan pada komponen React. Ia membantu anda mencipta animasi ringkas untuk mengendalikan interaksi berasaskan gerak isyarat yang kompleks. Terdapat kemungkinan yang tidak berkesudahan dengan Framer Motion untuk menambah interaksi pada aplikasi React anda.

Versi baharu Essential Studio? tersedia untuk pelanggan sedia ada pada halaman Lesen dan Muat Turun. Jika anda baharu, daftar untuk percubaan percuma 30 hari kami untuk meneroka ciri kami.

Jangan ragu untuk menghubungi kami melalui forum sokongan, portal sokongan atau portal maklum balas kami. Kami sentiasa di sini untuk membantu anda!

Blog Berkaitan

  • 5 Penonton React PDF Teratas untuk Pengendalian Dokumen yang Lancar
  • 5 Perpustakaan Carta Reaksi Teratas untuk 2025
  • Vite.js: Bina Bahagian Hadapan Lebih Pantas
  • RxJS untuk React: Membuka Kunci Keadaan Reaktif

Atas ialah kandungan terperinci Animasi Reaksi Tanpa Usaha: Panduan untuk Gerak Penggubah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Java vs JavaScript: Membersihkan kekeliruan Java vs JavaScript: Membersihkan kekeliruan Jun 20, 2025 am 12:27 AM

Java dan JavaScript adalah bahasa pengaturcaraan yang berbeza, masing -masing sesuai untuk senario aplikasi yang berbeza. Java digunakan untuk pembangunan aplikasi perusahaan dan mudah alih yang besar, sementara JavaScript digunakan terutamanya untuk pembangunan laman web.

Komen JavaScript: Penjelasan ringkas Komen JavaScript: Penjelasan ringkas Jun 19, 2025 am 12:40 AM

JavaScriptcommentsareessentialformaintaining,reading,andguidingcodeexecution.1)Single-linecommentsareusedforquickexplanations.2)Multi-linecommentsexplaincomplexlogicorprovidedetaileddocumentation.3)Inlinecommentsclarifyspecificpartsofcode.Bestpractic

Bagaimana untuk bekerja dengan tarikh dan masa di JS? Bagaimana untuk bekerja dengan tarikh dan masa di JS? Jul 01, 2025 am 01:27 AM

Titik berikut harus diperhatikan apabila tarikh pemprosesan dan masa di JavaScript: 1. Terdapat banyak cara untuk membuat objek tarikh. Adalah disyorkan untuk menggunakan rentetan format ISO untuk memastikan keserasian; 2. Dapatkan dan tetapkan maklumat masa boleh diperoleh dan tetapkan kaedah, dan ambil perhatian bahawa bulan bermula dari 0; 3. Tarikh pemformatan secara manual memerlukan rentetan, dan perpustakaan pihak ketiga juga boleh digunakan; 4. Adalah disyorkan untuk menggunakan perpustakaan yang menyokong zon masa, seperti Luxon. Menguasai perkara -perkara utama ini secara berkesan dapat mengelakkan kesilapan yang sama.

Kenapa anda harus meletakkan tag  di bahagian bawah ? Kenapa anda harus meletakkan tag di bahagian bawah ? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript vs Java: Perbandingan Komprehensif untuk Pemaju JavaScript vs Java: Perbandingan Komprehensif untuk Pemaju Jun 20, 2025 am 12:21 AM

JavaScriptispreferredforwebdevelopment, whersjavaisbetterforlarge-scalebackendsystemsandandroidapps.1) javascriptexcelsinceleatinginteractiveWebexperienceswithitsdynamicnatureanddommanipulation.2) javaoffersstrongyblectionandobjection

JavaScript: Meneroka jenis data untuk pengekodan yang cekap JavaScript: Meneroka jenis data untuk pengekodan yang cekap Jun 20, 2025 am 12:46 AM

JavascripthassevenfundamentalDatypes: nombor, rentetan, boolean, undefined, null, objek, andsymbol.1) numberuseadouble-precisionformat, bergunaforwidevaluangesbutbecautiouswithfloating-pointarithmetic.2)

Apakah peristiwa yang menggelegak dan menangkap di Dom? Apakah peristiwa yang menggelegak dan menangkap di Dom? Jul 02, 2025 am 01:19 AM

Penangkapan dan gelembung acara adalah dua peringkat penyebaran acara di Dom. Tangkap adalah dari lapisan atas ke elemen sasaran, dan gelembung adalah dari elemen sasaran ke lapisan atas. 1. Penangkapan acara dilaksanakan dengan menetapkan parameter useCapture addeventlistener kepada benar; 2. Bubble acara adalah tingkah laku lalai, useCapture ditetapkan kepada palsu atau ditinggalkan; 3. Penyebaran acara boleh digunakan untuk mencegah penyebaran acara; 4. Acara menggelegak menyokong delegasi acara untuk meningkatkan kecekapan pemprosesan kandungan dinamik; 5. Penangkapan boleh digunakan untuk memintas peristiwa terlebih dahulu, seperti pemprosesan pembalakan atau ralat. Memahami kedua -dua fasa ini membantu mengawal masa dan bagaimana JavaScript bertindak balas terhadap operasi pengguna.

Apa perbezaan antara Java dan JavaScript? Apa perbezaan antara Java dan JavaScript? Jun 17, 2025 am 09:17 AM

Java dan JavaScript adalah bahasa pengaturcaraan yang berbeza. 1.Java adalah bahasa yang ditaip dan disusun secara statik, sesuai untuk aplikasi perusahaan dan sistem besar. 2. JavaScript adalah jenis dinamik dan bahasa yang ditafsirkan, terutamanya digunakan untuk interaksi web dan pembangunan front-end.

See all articles