


Cara membuat animasi yang dicetuskan tatal dengan JavaScript Asas
Penggunaan animasi web yang bijak dapat meningkatkan pengalaman pengguna dan meningkatkan rayuan laman web. Tetapi jika elemen animasi terletak di bawah halaman, pengguna mungkin terlepasnya. Artikel ini akan memperkenalkan cara menggunakan JavaScript asli untuk melaksanakan animasi yang dicetuskan skrol, supaya animasi hanya akan mula bermain apabila pengguna menatal ke elemen tertentu, mengelakkan pembaziran sumber dan meningkatkan pengalaman pengguna.
Kami tidak perlu bergantung kepada perpustakaan pihak ketiga, kami boleh mencapainya dengan hanya sedikit kod JavaScript asli. Inti terletak pada menggunakan API Observer Persimpangan , yang dapat mengesan sama ada elemen sasaran memasuki tetingkap.
Melaksanakan acara pencetus tatal
Pendekatan kami merangkumi:
- Buat fungsi
scrollTrigger
untuk mengendalikan peristiwa pencetus tatal untuk elemen tertentu. - Apabila elemen memasuki tetingkap, tambahkan kelas
.active
. - Gunakan CSS
.active
Class.
Di samping itu, kita perlu menyokong fungsi panggilan balik tersuai untuk melakukan tindakan tertentu apabila elemen dapat dilihat, sebagai contoh:
scrolltrigger ('loader', { CB: Fungsi (EL) { el.innertext = 'Memuatkan ...' LoadContent () } })
Akhirnya, kami juga akan berurusan dengan tidak menyokong API Observer Persimpangan oleh pelayar yang lebih tua.
API Observer Persimpangan
API Observer Persimpangan membolehkan kita secara tidak sengaja memerhatikan keadaan persimpangan elemen sasaran dan tingkap, yang lebih cekap daripada mendengar peristiwa menatal.
Bina fungsi pencetus tatal
Pertama, buat fungsi scrollTrigger
, yang menerima pemilih sebagai parameter:
fungsi scrolltrigger (pemilih) { biarkan els = document.QuerySelectorAll (pemilih); els = array.from (els); els.foreach (el => { AddObserver (EL); }); } // Gunakan contoh scrolltrigger ('. Scroll-reveal');
Seterusnya, buat fungsi addObserver
dan gunakan pemerhati persimpangan untuk mendengar unsur -unsur:
fungsi scrolltrigger (pemilih) { biarkan els = document.QuerySelectorAll (pemilih); els = array.from (els); els.foreach (el => { AddObserver (EL); }); } fungsi addObserver (el) { Biarkan Observer = New IntersectionObserver ((Entri, Observer) => { entri.Foreach (entry => { jika (entry.isintersecting) { entry.target.classlist.add ('aktif'); Observer.unobserve (entry.target); } }); }); Observer.observe (EL); } // Gunakan contoh scrolltrigger ('. Scroll-reveal');
Kod di atas akan menambah .active
Kelas aktif apabila bahagian elemen dapat dilihat. Untuk lebih banyak kawalan yang baik, kita boleh menggunakan parameter options
pemerhati persimpangan:
fungsi scrolltrigger (pemilih, options = {}) { biarkan els = document.QuerySelectorAll (pemilih); els = array.from (els); els.foreach (el => { AddObserver (EL, Pilihan); }); } fungsi addObserver (el, options) { Biarkan Observer = New IntersectionObserver ((Entri, Observer) => { entri.Foreach (entry => { jika (entry.isintersecting) { entry.target.classlist.add ('aktif'); Observer.unobserve (entry.target); } }); }, pilihan); Observer.observe (EL); } // Gunakan contoh scrolltrigger ('. Scroll-reveal', { rootmargin: '-200px' });
Sekarang, kami telah mencapai dua gol pertama. Seterusnya, tambahkan sokongan fungsi panggil balik:
fungsi scrolltrigger (pemilih, options = {}) { biarkan els = document.QuerySelectorAll (pemilih); els = array.from (els); els.foreach (el => { AddObserver (EL, Pilihan); }); } fungsi addObserver (el, options) { Biarkan Observer = New IntersectionObserver ((Entri, Observer) => { entri.Foreach (entry => { jika (entry.isintersecting) { jika (options.cb) { options.cb (EL); } else { entry.target.classlist.add ('aktif'); } Observer.unobserve (entry.target); } }); }, pilihan); Observer.observe (EL); } // Gunakan contoh scrolltrigger ('loader', { rootmargin: '-200px', CB: Fungsi (EL) { el.innertext = 'memuatkan ...'; setTimeout (() => { el.innertext = 'Tugas selesai! '; }, 1000); } });
Akhirnya, berurusan dengan keserasian penyemak imbas warisan:
fungsi scrolltrigger (pemilih, options = {}) { biarkan els = document.QuerySelectorAll (pemilih); els = array.from (els); els.foreach (el => { AddObserver (EL, Pilihan); }); } fungsi addObserver (el, options) { jika (! ('intersectionobserver' dalam tetingkap)) { jika (options.cb) { options.cb (EL); } else { el.classlist.add ('aktif'); } kembali; } Biarkan Observer = New IntersectionObserver ((Entri, Observer) => { entri.Foreach (entry => { jika (entry.isintersecting) { jika (options.cb) { options.cb (EL); } else { entry.target.classlist.add ('aktif'); } Observer.unobserve (entry.target); } }); }, pilihan); Observer.observe (EL); } // Gunakan contoh scrolltrigger ('. Intro-teks'); Scrolltrigger ('. Scroll-Reveal', { rootmargin: '-200px', }); scrolltrigger ('loader', { rootmargin: '-200px', CB: Fungsi (EL) { el.innertext = 'memuatkan ...'; setTimeout (() => { el.innertext = 'Tugas selesai! '; }, 1000); } });
Melalui langkah-langkah di atas, kami berjaya mencapai kesan animasi yang dicetuskan tatal dan mengambil kira keserasian penyemak imbas. Saya harap artikel ini dapat membantu anda meningkatkan pengalaman pengguna laman web anda.
Atas ialah kandungan terperinci Cara membuat animasi yang dicetuskan tatal dengan JavaScript Asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Mari kita cuba menyusun istilah di sini: "Penyedia Borang Statik." Anda membawa html anda

Pada permulaan projek baru, kompilasi SASS berlaku dalam sekejap mata. Ini terasa hebat, terutamanya apabila ia dipasangkan dengan BrowserSync, yang dimuat semula

Pada minggu ini, berita platform, Chrome memperkenalkan atribut baru untuk memuatkan, spesifikasi aksesibiliti untuk pemaju web, dan gerakan BBC

Ini saya melihat elemen HTML untuk kali pertama. Saya telah menyedarinya untuk seketika, tetapi Haven ' t mengambilnya untuk putaran lagi. Ia mempunyai cukup keren dan

Beli atau Membina adalah perdebatan klasik dalam teknologi. Membina barang sendiri mungkin berasa lebih murah kerana tidak ada item baris pada bil kad kredit anda, tetapi

Pada minggu ini, roundup, sebuah bookmarklet yang berguna untuk memeriksa tipografi, menggunakan menunggu untuk mengamuk dengan cara modul JavaScript mengimport satu sama lain, ditambah Facebook ' s

Untuk sementara waktu, iTunes adalah anjing besar dalam podcasting, jadi jika anda mengaitkan "Langgan Podcast" untuk suka:

Anda pasti pasti menetapkan tajuk cache yang jauh pada aset anda seperti CSS dan JavaScript (dan imej dan fon dan apa sahaja yang lain). Yang memberitahu penyemak imbas
