cari
Rumahhujung hadapan webtutorial cssCara 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.

Cara membuat animasi yang dicetuskan tatal dengan JavaScript Asas

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:

  1. Buat fungsi scrollTrigger untuk mengendalikan peristiwa pencetus tatal untuk elemen tertentu.
  2. Apabila elemen memasuki tetingkap, tambahkan kelas .active .
  3. 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!

Kenyataan
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
Animasi yang didorong oleh tatal di dalam karusel CSSAnimasi yang didorong oleh tatal di dalam karusel CSSMay 16, 2025 am 09:50 AM

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?

Kemasukan CSS: Memilih kaedah yang tepat untuk projek andaKemasukan CSS: Memilih kaedah yang tepat untuk projek andaMay 16, 2025 am 12:02 AM

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

Ini tidak sepatutnya berlaku: menyelesaikan masalah yang mustahilIni tidak sepatutnya berlaku: menyelesaikan masalah yang mustahilMay 15, 2025 am 10:32 AM

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

@KeyFrames vs CSS Transitions: Apakah perbezaannya?@KeyFrames vs CSS Transitions: Apakah perbezaannya?May 14, 2025 am 12:01 AM

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

Menggunakan halaman CMS untuk pengurusan kandungan tapak statikMenggunakan halaman CMS untuk pengurusan kandungan tapak statikMay 13, 2025 am 09:24 AM

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 &

Panduan Terbaik untuk Menghubungkan Fail CSS di HTMLPanduan Terbaik untuk Menghubungkan Fail CSS di HTMLMay 13, 2025 am 12:02 AM

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.

CSS Flexbox vs Grid: Kajian KomprehensifCSS Flexbox vs Grid: Kajian KomprehensifMay 12, 2025 am 12:01 AM

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 memasukkan fail CSS: Kaedah dan amalan terbaikCara memasukkan fail CSS: Kaedah dan amalan terbaikMay 11, 2025 am 12:02 AM

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.

See all articles

Alat AI Hot

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.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SecLists

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

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

MantisBT

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.