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

Jadual Kandungan
Tinjauan cepat IntersectionObserver
Desktop
Mudah alih/tablet
Gunakan Kes 1: Imej memuatkan malas
Gunakan Kes 2: Video Jeda Secara Automatik Apabila Elemen Meninggalkan Pandangan
Gunakan Kes 3: Lihat berapa banyak kandungan yang telah dilihat
Terima kasih atas penyertaan anda!
Rumah hujung hadapan web tutorial css Beberapa kegunaan fungsi untuk pemerhati persimpangan untuk mengetahui bila elemen dilihat

Beberapa kegunaan fungsi untuk pemerhati persimpangan untuk mengetahui bila elemen dilihat

Apr 21, 2025 am 11:19 AM

API Observer Persimpangan: Pemantauan masa nyata sama ada elemen boleh dilihat

Anda mungkin tidak tahu bahawa JavaScript secara senyap -senyap mengumpulkan banyak pemerhati pada tahun -tahun kebelakangan ini, dan Observer Persimpangan adalah salah satu alat yang berkuasa. Pemerhati adalah objek yang memantau peristiwa tertentu dalam masa nyata, sama seperti burung yang duduk di tempat kegemaran mereka dan menunggu burung muncul. Pemerhati yang berbeza memerhatikan matlamat yang berbeza.

Pemerhati pertama saya bersentuhan dengan pemerhati mutasi, yang mengesan perubahan pada pokok dom. Ia unik pada masa itu, tetapi sekarang kita mempunyai lebih banyak pemerhati.

Observer Persimpangan mengamati "persimpangan" antara elemen dan unsur nenek moyangnya atau kawasan yang kelihatan dari halaman (iaitu, viewport) (iaitu, elemen memasuki atau meninggalkan viewport). Ia agak seperti menonton kereta api di stesen. Anda dapat melihat apabila kereta api memasuki stesen, apabila ia meninggalkan stesen dan berapa lama ia berhenti.

Memahami apabila elemen akan memasuki bidang pandangan, apabila ia hilang, atau berapa lama ia telah berlalu sejak ia memasuki bidang pandangan sangat praktikal. Oleh itu, kita akan belajar tentang beberapa kes penggunaan - selepas kod untuk membuat objek IntersectionObserver melalui API Observer Persimpangan.

Tinjauan cepat IntersectionObserver

Pada masa penulisan, API Observer Persimpangan telah mendapat sokongan yang luas.

Penyemak imbas menyokong data dari Canciuse, yang mengandungi lebih banyak maklumat. Nombor menunjukkan bahawa penyemak imbas menyokong ciri ini dalam versi ini dan kemudian.

Desktop

Mudah alih/tablet

Walau bagaimanapun, jika anda ingin menyemak sama ada ia disokong semasa menggunakan pemerhati persimpangan, anda boleh menyemak sama ada harta intersectionoBserver wujud dalam objek tetingkap:

 jika (!! window.intersectionObserver) {}
/ * atau */
jika ('intersectionobserver' dalam tetingkap) {}

Ok, mari kita lihat penciptaan objek:

 var Observer = New IntersectionObserver (Callback, Options);

Pembina objek IntersectionObserver menerima dua parameter. Yang pertama ialah fungsi panggil balik , yang akan dilaksanakan apabila pemerhati melihat persimpangan dan melepasi beberapa data mengenai persimpangan secara tidak segerak.

Parameter kedua (pilihan) adalah pilihan , objek yang mengandungi maklumat yang mentakrifkan apa yang "salib". Kami mungkin tidak mahu tahu bila elemen akan memasuki bidang pandangan, tetapi hanya apabila ia kelihatan sepenuhnya . Perkara seperti ini ditakrifkan oleh parameter pilihan.

Pilihan mempunyai tiga sifat:

  • Root - Unsur nenek moyang/viewport yang mana elemen yang diperhatikan akan menyeberang. Fikirkannya sebagai stesen di mana kereta api akan menyeberanginya.
  • Rootmargin - perimeter elemen akar, mengecut atau membesarkan kawasan pemerhatian unsur akar untuk mengesan silang. Ia sama dengan harta margin CSS.
  • Ambang - pelbagai nilai (antara 0 dan 1.0), masing -masing mewakili jarak unsur melintasi atau melintasi akar, di mana panggilan balik akan dicetuskan.

Katakan ambang kami ialah 0.5. Panggilan balik dicetuskan apabila elemen memasuki atau melebihi ambang separa kelihatannya. Sekiranya nilai itu [0.3, 0.6] , panggilan balik akan dicetuskan apabila elemen memasuki atau melebihi ambang yang kelihatan 30% dan ambang yang kelihatan 60%.

Itu semua tentang teori sekarang. Mari lihat beberapa demo. Pertama sekali, memuatkan malas.

Gunakan Kes 1: Imej memuatkan malas

Untuk melihat tag beban, periksa halaman ini kerana demo tertanam tidak memaparkan tag.

Trik CSS telah memperkenalkan pemuatan malas, yang biasanya dilakukan seperti ini: memaparkan pemegang tempat yang ringan, imej akan dipaparkan di kedudukan pemegang tempat, dan kemudian menggantikannya dengan imej yang diharapkan ketika memasuki (atau akan masuk) medan pandangan. Percayalah, tidak malas untuk melaksanakannya sama sekali - iaitu, sehingga kita mendapat beberapa kod asli untuk digunakan.

Kami akan menggunakan mekanisme yang sama. Pertama, kita mempunyai sekumpulan imej dan menentukan imej pemegang tempat yang pada mulanya dipaparkan. Kami menggunakan atribut data untuk membawa URL imej asal untuk dipaparkan, yang mentakrifkan imej yang akan dimuatkan apabila imej sebenar memasuki medan pandangan.

<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174520555311750.jpg" class="lazy" alt="Beberapa kegunaan berfungsi untuk pemerhati persimpangan untuk mengetahui bila elemen dilihat"><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174520555481250.jpg" class="lazy" alt="Beberapa kegunaan berfungsi untuk pemerhati persimpangan untuk mengetahui bila elemen dilihat"><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174520555431263.jpg" class="lazy" alt="Beberapa kegunaan berfungsi untuk pemerhati persimpangan untuk mengetahui bila elemen dilihat">

Selebihnya adalah skrip.

 Biarkan Observer = New IntersectionObserver (
(penyertaan, pemerhati) => { 
  entri.Foreach (entry => {
    /* mengendalikan setiap salib di sini*/
  });
}, 
{rootMargin: "0px 0px -200px 0px"});

Fungsi panggil balik di atas adalah fungsi anak panah (walaupun anda boleh menggunakan fungsi normal).

Fungsi panggil balik menerima dua parameter: satu set penyertaan yang mengandungi maklumat mengenai setiap persimpangan; dan pemerhati itu sendiri. Penyertaan ini boleh ditapis atau dilingkari, dan kemudian memproses penyertaan salib yang kita inginkan. Bagi pilihan, saya hanya memberikan nilai rootmargin, yang membolehkan sifat akar dan ambang untuk mengambil nilai lalai mereka.

Nilai lalai akar adalah viewport, dan nilai lalai ambang adalah 0 - ini boleh ditafsirkan secara kasar sebagai "memberitahu saya ketika elemen muncul dalam viewport!"

Walau bagaimanapun, pelik, saya menggunakan rootmargin untuk mengurangkan bahagian bawah kawasan pemerhatian Viewport sebanyak 200 piksel. Kami biasanya tidak melakukan ini dalam pemuatan malas. Sebaliknya, kita mungkin meningkatkan margin atau mengekalkan lalai. Walau bagaimanapun, dalam kes ini, kita biasanya tidak mengurangkan margin. Saya melakukan ini hanya kerana saya ingin menunjukkan imej asal yang dimuatkan di ambang kawasan pemerhatian. Jika tidak, semua operasi akan berlaku dari pandangan.

Apabila imej memotong kawasan tontonan Viewport (200 piksel di atas bahagian bawah dalam demonstrasi), kami menggantikan imej pemegang tempat dengan imej sebenar.

 Biarkan Observer = New IntersectionObserver (
(penyertaan, pemerhati) => { 
entri.Foreach (entry => {
    /* Penggantian Pemegang Tempat*/
    entry.target.src = entry.target.dataset.src;
    Observer.unobserve (entry.target);
  });
}, 
{rootMargin: "0px 0px -200px 0px"});

entry.target adalah elemen yang diperhatikan oleh pemerhati. Dalam kes kita, ini adalah elemen imej. Sebaik sahaja pemegang tempat digantikan dalam elemen imej, kita tidak lagi perlu memerhatikannya, jadi kita panggil kaedah pemerhati unobserve di atasnya.

Sekarang bahawa pemerhati sudah siap, sudah tiba masanya untuk mula memerhatikan semua imej menggunakan kaedah observe :

 document.QuerySelectorAll ('img'). foreach (img => {Observer.observe (img)});

Itu sahaja! Kami malas untuk memuatkan imej. Pergi ke demo seterusnya.

Gunakan Kes 2: Video Jeda Secara Automatik Apabila Elemen Meninggalkan Pandangan

Katakan kami menonton video di YouTube dan (atas sebab apa pun) kami ingin menatal ke bawah untuk membaca komen. Saya tidak tahu bagaimana keadaan anda, tetapi saya biasanya tidak menjeda video sebelum melakukan ini, yang bermaksud saya terlepas beberapa video semasa melayari.

Bukankah lebih baik jika video itu akan berhenti sejenak apabila kita menatal dari video? Ia akan menjadi lebih baik jika video disambung semula apabila ia memasuki semula bidang pandangan, jadi tidak perlu mengklik butang main atau jeda.

Observer persimpangan pasti boleh melakukan ini.

Inilah video kami di HTML:

<video controls="" src="OSRO-animation.mp4"></video>

Inilah cara kami menjeda dan memainkan video semasa setiap crossover (iaitu kemasukan):

 biarkan video = document.QuerySelector ('Video');
biarkan ispause = false; /* bendera untuk menjeda video secara automatik*/
Biarkan Observer = New IntersectionObserver ((Entri, Observer) => { 
  entri.Foreach (entry => {
    jika (entry.intersectionRatio! = 1 &&! Video.pause) {
      video.pause (); Ispaused = true;
    }
    lain jika (isPaused) {video.play (); ispaused = false}
  });
}, {ambang: 1});
Observer.observe (video);

Sebelum saya menunjukkan kepada anda bagaimana untuk menjeda dan memainkan video semasa setiap salib (iaitu entri), saya ingin menarik perhatian anda ke harta ambang pilihan.

Nilai ambang ialah 1. Root dan rootmargin akan mengambil nilai lalai. Ini bersamaan dengan berkata, "Hei, beritahu saya apabila elemen itu dapat dilihat sepenuhnya dalam pandangan."

Sebaik sahaja salib berlaku dan panggilan balik dicetuskan, kami akan menjeda atau memainkan video mengikut logik berikut:

Saya tidak memanggil unobserve untuk video itu, jadi pemerhati terus menonton video dan berhenti setiap kali video meninggalkan pandangan.

Gunakan Kes 3: Lihat berapa banyak kandungan yang telah dilihat

Ini dapat dijelaskan dan dilaksanakan dalam pelbagai cara berdasarkan kandungan anda dan cara pilihan anda untuk mengukur berapa banyak kandungan yang telah dilihat.

Untuk contoh yang mudah, kami akan melihat perenggan terakhir setiap jawatan dalam senarai jawatan pada halaman. Sebaik sahaja perenggan terakhir artikel itu dapat dilihat sepenuhnya, kami akan mengandaikan bahawa artikel itu telah dibaca -seperti yang kita katakan bahawa melihat kereta terakhir kereta api bersamaan dengan melihat seluruh kereta api.

Ini adalah demo yang menunjukkan dua artikel di halaman, masing -masing mengandungi pelbagai perenggan teks.

HTML kami yang dipermudahkan kelihatan seperti ini:

<div></div>

<h2>Perkara 1</h2>
<p></p>

<h2>Perkara 2</h2>
<p></p>

biarkan n = 0; /* Jumlah artikel yang dilihat*/
biarkan Count = document.QuerySelector ('#count');
Biarkan Observer = New IntersectionObserver ((Entri, Observer) => { 
  entri.Foreach (entry => {
    jika (entry.isintersecting) {
      count.textcontent = `artikel sepenuhnya dilihat - $ {n}`; 
      Observer.unobserve (entry.target);
    }
  });
}, {ambang: 1});

document.QuerySelectorAll ('Artikel> P: Last-Child'). Foreach (p => {Observer.observe (P)});

Semasa setiap crossover (iaitu perenggan terakhir artikel ini dapat dilihat sepenuhnya), kami meningkatkan kaunter: n, yang mewakili jumlah artikel yang dibaca. Kami kemudian memaparkan nombor itu di atas senarai artikel.

Sebaik sahaja kita telah mengira crossover perenggan terakhir, kita tidak perlu memerhatikannya lagi, jadi kita panggil unobserve di atasnya.

Terima kasih atas penyertaan anda!

Inilah contoh dalam artikel ini yang akan kita lihat bersama. Anda mungkin telah belajar cara menggunakannya untuk memerhatikan unsur -unsur dan mencetuskan peristiwa berdasarkan persimpangan mereka dengan viewport.

Iaitu, berhati -hati diperlukan apabila membuat perubahan visual berdasarkan data silang yang diperoleh melalui pemerhati. Sudah tentu, pemerhati persimpangan sangat mudah apabila merakam cross-data. Walau bagaimanapun, apabila ia digunakan untuk membuat perubahan pada skrin, kita perlu memastikan perubahan tidak ketinggalan, yang merupakan kemungkinan kerana kita pada dasarnya membuat perubahan berdasarkan data yang diambil secara asynchronously . Ini mungkin mengambil sedikit masa untuk memuatkan.

Seperti yang dapat kita lihat, setiap entri silang mempunyai set atribut yang menyampaikan maklumat mengenai salib. Dalam jawatan ini, saya tidak meliputi semua sifat ini, jadi pastikan untuk menyemaknya.

Imej dipelihara dalam format asalnya. Perhatikan bahawa jadual kosong dalam input dan dengan itu kekal kosong dalam output. Saya juga telah membuat perubahan gaya untuk meningkatkan kebolehbacaan dan aliran, sambil mengekalkan makna asal.

Atas ialah kandungan terperinci Beberapa kegunaan fungsi untuk pemerhati persimpangan untuk mengetahui bila elemen dilihat. 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!

Artikel Panas

Agnes Tachyon Build Guide | Musume Derby Pretty
2 minggu yang lalu By Jack chen
Oguri Cap Build Guide | Musume Derby Pretty
2 minggu yang lalu By Jack chen
Puncak: Cara Menghidupkan Pemain
4 minggu yang lalu By DDD
Puncak bagaimana untuk emote
3 minggu yang lalu By Jack chen

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)

Apa itu 'menyekat CSS'? Apa itu 'menyekat CSS'? Jun 24, 2025 am 12:42 AM

CSS Blok halaman yang diberikan kerana pelayar melihat CSS dalam talian dan luaran sebagai sumber utama secara lalai, terutamanya dengan stylesheet yang diimport, header sejumlah besar CSS sebaris, dan gaya pertanyaan media yang tidak dapat dioptimumkan. 1. Ekstrak CSS kritikal dan membenamkannya ke HTML; 2. Kelewatan memuatkan CSS bukan kritikal melalui JavaScript; 3. Gunakan atribut media untuk mengoptimumkan pemuatan seperti gaya cetak; 4. Memampatkan dan menggabungkan CSS untuk mengurangkan permintaan. Adalah disyorkan untuk menggunakan alat untuk mengekstrak CSS utama, menggabungkan REL = "Preload" pemuatan asynchronous, dan menggunakan media yang ditangguhkan dengan munasabah untuk mengelakkan pemisahan yang berlebihan dan kawalan skrip kompleks.

Apakah AutoPrefixer dan bagaimana ia berfungsi? Apakah AutoPrefixer dan bagaimana ia berfungsi? Jul 02, 2025 am 01:15 AM

AutoPrefixer adalah alat yang secara automatik menambah awalan vendor ke atribut CSS berdasarkan skop penyemak imbas sasaran. 1. Ia menyelesaikan masalah mengekalkan awalan secara manual dengan kesilapan; 2. Bekerja melalui borang pemalam postcss, menghuraikan CSS, menganalisis atribut yang perlu diawali, dan menjana kod mengikut konfigurasi; 3. Langkah-langkah penggunaan termasuk memasang pemalam, menetapkan senarai pelayar, dan membolehkan mereka dalam proses membina; 4. Nota termasuk tidak menambah awalan secara manual, menyimpan kemas kini konfigurasi, awalan tidak semua atribut, dan disyorkan untuk menggunakannya dengan preprocessor.

Apakah fungsi conic-gradient ()? Apakah fungsi conic-gradient ()? Jul 01, 2025 am 01:16 AM

Function-gradient () functionIncsscreatesculculargradientsthatrotatecolorstopsaroundroentroint.1.ISIISIDEALFORPIECHARTS, Progressindicators, Colorwheels, andDecorativeBackgrounds.2.itworksByDefiningColorStopsatSpecificles, OpsticalStarting

Tutorial CSS untuk membuat tajuk atau footer melekit Tutorial CSS untuk membuat tajuk atau footer melekit Jul 02, 2025 am 01:04 AM

TOCREATESTICKYHEADERSANDFOOTERSWITHCSS, USEPOSISI: STICKYFORHEADERSWITHOPVARUEANDZ-INDEX, MemastikanParentContainersdon'Trestrictit.1.ForstickyHeaders: SetPosition: Sticky, atas: 0, Z-index, dan BEBERKOORSICHISTORS.2.FORTOORSTICE: FORBORTORSIS.2.FORTORSICHORORS.

Apakah skop harta tersuai CSS? Apakah skop harta tersuai CSS? Jun 25, 2025 am 12:16 AM

Skop sifat adat CSS bergantung kepada konteks perisytiharan mereka, pembolehubah global biasanya ditakrifkan dalam: akar, manakala pembolehubah tempatan ditakrifkan dalam pemilih khusus untuk komponen dan pengasingan gaya. Sebagai contoh, pembolehubah yang ditakrifkan dalam kelas .card hanya tersedia untuk unsur -unsur yang sepadan dengan kelas dan anak -anak mereka. Amalan terbaik termasuk: 1. Penggunaan: Root untuk menentukan pembolehubah global seperti warna topik; 2. Tentukan pembolehubah tempatan di dalam komponen untuk melaksanakan enkapsulasi; 3. Elakkan berulang kali mengisytiharkan pemboleh ubah yang sama; 4. Beri perhatian kepada masalah liputan yang mungkin disebabkan oleh kekhususan pemilih. Di samping itu, pembolehubah CSS adalah sensitif kes dan harus ditakrifkan sebelum digunakan untuk mengelakkan kesilapan. Jika pemboleh ubah tidak ditentukan atau rujukan gagal, nilai sandaran atau nilai awal lalai akan digunakan. Debug boleh dilakukan melalui pemaju penyemak imbas

Apakah unit FR dalam grid CSS? Apakah unit FR dalam grid CSS? Jun 22, 2025 am 12:46 AM

Thfrunitincssgriddistributesavailablespaceproportionally.1.itworksbydividingspaceBasedOnthesumoffrvalues, mis., 1fr2frgivesone-thirdandtwo-thirds.2.itenablesflexiBlelayouts, evercomeShonShonShon.3SoSheShon.3.

Tutorial CSS yang memberi tumpuan kepada reka bentuk pertama mudah alih Tutorial CSS yang memberi tumpuan kepada reka bentuk pertama mudah alih Jul 02, 2025 am 12:52 AM

Mudah alih-firstcssdesignrequiressettingtheViewportmetatag, menggunakan pelindung, stylingfromsmallscreensup, optimizingtypographyandtouchtargets.first, addtocontrolscaling.second, use%, eM, orreminsteadofpixelflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflexflex

Bolehkah anda bersarang bekas Flexbox di dalam item grid CSS? Bolehkah anda bersarang bekas Flexbox di dalam item grid CSS? Jun 22, 2025 am 12:40 AM

Ya, anda boleh menggunakan Flexbox dalam item CSSGRID. Pendekatan khusus adalah untuk terlebih dahulu membahagikan struktur halaman dengan grid dan menetapkan subkontainer ke dalam sel grid sebagai bekas flex untuk mencapai penjajaran dan susunan yang lebih baik; Sebagai contoh, sarang div dengan paparan: gaya flex dalam html; Manfaat untuk melakukan ini termasuk susun atur hierarki, reka bentuk responsif yang lebih mudah, dan pembangunan komponen yang lebih mesra; Perlu diperhatikan bahawa atribut paparan hanya mempengaruhi elemen kanak -kanak langsung, mengelakkan bersarang yang berlebihan, dan menganggap isu keserasian pelayar lama.

See all articles