


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!

Hei, tidak ada ciri CSS yang cukup baru yang berfungsi dengan kawasan tatal? Oh ya, animasi yang didorong oleh tatal itu ' s. Sehingga kini, kita boleh mencetuskan animasi sambil menatal melalui item dalam karusel CSS?

Thebestmethodforincludingcsssdependsonprojectsizeandcomplexity: 1) forlargerprojects, useexternalcsforbettermaintainabilityandperformance.2) forsmallerProjects, internalcssissuitablevoidextrahoStrahoSt

Apa yang kelihatan seperti menyelesaikan masalah salah satu daripada isu -isu yang mustahil yang ternyata menjadi sesuatu yang tidak pernah anda fikirkan.

@keyframesandcsstransitionsdifferincomplexity:@keyframesallowsfordetailedanimationseSseSeSs, whileCstransitionShandlesImplestateShanges.usecsstransitionsforhovereffectsLikeButtonColorchanges, dan@keyframesforintricateanimation.

Saya tahu, saya tahu: terdapat satu tan pilihan sistem pengurusan kandungan yang tersedia, dan sementara saya telah menguji beberapa, tidak ada yang benar -benar menjadi satu, y ' tahu? Model harga pelik, penyesuaian yang sukar, sesetengahnya akhirnya menjadi keseluruhan &

Menghubungkan fail CSS ke HTML boleh dicapai dengan menggunakan unsur -unsur dalam sebahagian HTML. 1) Gunakan tag untuk menghubungkan fail CSS tempatan. 2) Pelbagai fail CSS boleh dilaksanakan dengan menambahkan beberapa tag. 3) Fail CSS luaran menggunakan pautan URL mutlak, seperti. 4) Pastikan penggunaan laluan fail yang betul dan pesanan pemuatan fail CSS, dan mengoptimumkan prestasi boleh menggunakan preprocessor CSS untuk menggabungkan fail.

Memilih Flexbox atau Grid bergantung kepada keperluan susun atur: 1) Flexbox sesuai untuk susun atur satu dimensi, seperti bar navigasi; 2) Grid sesuai untuk susun atur dua dimensi, seperti susun atur majalah. Kedua -duanya boleh digunakan dalam projek untuk meningkatkan kesan susun atur.

Cara terbaik untuk memasukkan fail CSS adalah menggunakan tag untuk memperkenalkan fail CSS luaran di bahagian HTML. 1. Gunakan tag untuk memperkenalkan fail CSS luaran, seperti. 2. Untuk pelarasan kecil, css sebaris boleh digunakan, tetapi harus digunakan dengan berhati -hati. 3. Projek besar boleh menggunakan preprocessors CSS seperti SASS atau kurang untuk mengimport fail CSS lain melalui @import. 4. Untuk prestasi, fail CSS harus digabungkan dan CDN harus digunakan, dan dimampatkan menggunakan alat seperti CSSNANO.


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

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.
