Rumah hujung hadapan web Tutorial H5 Gunakan komponen pramuat imej mudah untuk meningkatkan pengalaman pengguna kemahiran tutorial _html5 halaman mudah alih html5

Gunakan komponen pramuat imej mudah untuk meningkatkan pengalaman pengguna kemahiran tutorial _html5 halaman mudah alih html5

May 16, 2016 pm 03:51 PM
h5 komponen

Apabila bekerja pada halaman mudah alih h5, saya percaya anda mesti menghadapi situasi di mana halaman telah dibuka, tetapi imej di dalamnya tidak dimuatkan Walaupun masalah ini tidak menjejaskan fungsi halaman, ia tidak kondusif kepada pengalaman pengguna. Tanpa mengira kelajuan rangkaian, terdapat banyak cara untuk menyelesaikan masalah ini: yang paling asas ialah mengoptimumkan prestasi dari aspek seperti penggabungan permintaan http, pengurusan cache, pemampatan imej, dan lain-lain adalah dengan pra-memproses semua imej yang digunakan; halaman. Dalam proses pemuatan, apabila pengguna membuka halaman, skrin pertama tidak dipaparkan dengan serta-merta, kesan pemuatan sumber dipaparkan dahulu, dan kemudian kandungan utama halaman dipaparkan selepas pemuatan ini boleh menyelesaikan masalah. Walaupun kesan pemuatan ini mengambil masa menyemak imbas pengguna, kami boleh menjadikannya lebih cantik dan menarik, jadi ia tidak akan menjejaskan pengalaman pengguna. Artikel ini melaksanakan idea ini dan menyediakan komponen pramuat imej yang sangat mudah Ia mudah untuk dilaksanakan dan tidak lemah dalam fungsi Ia harus menjadi nilai rujukan kepada anda semasa membuat halaman mudah alih.
Kesan:

1. Idea pelaksanaan

Teg img dalam HTML dan imej latar belakang dalam CSS akan mencetuskan pelayar untuk memuatkan imej yang berkaitan Walau bagaimanapun, jika imej telah dimuatkan, penyemak imbas akan terus menggunakan imej yang dimuatkan, oleh itu Ia boleh dipaparkan pada. halaman serta-merta. Melalui javascript, cipta objek Imej, dan kemudian tetapkan atribut src objek ini kepada alamat imej yang akan dimuatkan, yang juga boleh mencetuskan penyemak imbas untuk memuatkan imej Anda boleh menggunakan ini untuk merealisasikan fungsi pramuat imej: penggunaan pertama yang berkaitan dengan halaman Sembunyikan elemen imej, kemudian gunakan js untuk memuatkan imej, tunggu sehingga semua imej dimuatkan, dan kemudian paparkan elemen tersembunyi. Walau bagaimanapun, ini hanyalah idea pelaksanaan asas Untuk melengkapkan komponen pramuat dengan fungsi yang lebih mantap, masih terdapat tiga masalah:
1) Masalah kemajuan
Memandangkan pramuat dilakukan pada masa yang sama, komponen pramuat mesti juga dilakukan. Kesannya ialah kemajuan pemuatan perlu dimaklumkan kepada konteks luaran dalam masa nyata. Terdapat dua cara untuk melaksanakan kemajuan Yang pertama ialah saiz data yang dimuatkan/jumlah saiz data, dan yang kedua ialah bilangan fail yang dimuatkan/jumlah fail Dalam penyemak imbas, adalah tidak realistik untuk menggunakan kaedah pertama bukan cara asli untuk melakukannya, jadi kita hanya boleh menggunakan kaedah kedua.
2) Masalah kegagalan memuatkan imej
Sebagai contoh, jika terdapat 4 imej, 50% daripadanya telah dimuatkan, dan ralat berlaku semasa memuatkan imej ketiga Sekiranya kemajuan diumpan semula kepada 75%. ? Jawapannya ialah: ya. Jika ini tidak dilakukan, kemajuan tidak akan mencapai 100%, dan kandungan utama halaman tidak akan mempunyai peluang untuk dipaparkan Walaupun pemuatan imej mungkin gagal, ia tidak ada kaitan dengan pemuat itu sendiri tidak wujud? Ini bermakna kegagalan pemuatan imej tidak seharusnya menjejaskan kefungsian pemuat.
3) Masalah tamat masa memuatkan imej
Imej tidak boleh dimuatkan terlalu lama, jika tidak, pengguna akan kekal dalam kesan pemuatan dan tidak dapat melihat kandungan utama, dan masa menunggu pengguna akan dilanjutkan tanpa kawalan, mengakibatkan dalam penurunan dalam pengalaman pengguna Ini akan Ia bertentangan dengan niat asal pemuat. Oleh itu, tamat masa pemuatan harus ditetapkan untuk setiap imej Jika pemuatan tidak selesai selepas tamat masa semua imej, pemuatan harus ditinggalkan secara aktif, konteks luaran harus dimaklumkan bahawa pemuatan telah selesai, dan kandungan utama haruslah diisi. dipaparkan.
Berdasarkan keperluan di atas, pelaksanaan yang disediakan dalam artikel ini ialah:

Kod JavaScriptSalin kandungan ke papan keratan
  1. (fungsi () {    
  2. fungsi isArray(obj) {    
  3. kembali Object.prototype.toString.call(obj) === '[objek Array]' ;    
  4. }    
  5. /**
  6. * @param imgList Senarai alamat imej untuk dimuatkan, ['aa/asd.png','aa/xxx.png']
  7. * Panggilan balik @param Panggilan balik selepas setiap imej berjaya dimuatkan dan "jumlah imej yang dimuatkan/jumlah imej yang akan dimuatkan" dihantar untuk menunjukkan kemajuan
  8. * @param tamat masa tamat masa untuk memuatkan setiap imej, lalainya ialah 5s
  9. */    
  10. var pemuat = fungsi (imgList, panggilan balik, masa tamat) {    
  11. masa tamat = masa tamat || 5000;    
  12. imgList = isArray(imgList) && imgList || [];    
  13. panggilan balik = jenis(panggilan balik) === 'fungsi' && panggilan balik;    
  14. var jumlah = imgList.length,    
  15. dimuatkan = 0,    
  16. imej = [],    
  17. _on = fungsi () {    
  18. dimuatkan < jumlah && ( dimuatkan, panggil balik && panggilan balik(dimuatkan / jumlah));    
  19. };    
  20. jika (!jumlah) {    
  21. kembali panggil balik && panggil balik(1);    
  22. }    
  23. untuk (var i = 0; i < jumlah; i ) {    
  24. imej[i] = baharu Imej();    
  25. imej[i].onload = imej[i].onerror = _on;    
  26. imej[i].src = imgList[i];    
  27. }    
  28. /**
  29. * Jika masih terdapat gambar yang belum dimuatkan dalam tempoh tamat masa * jumlah julat masa (syarat penghakiman dimuatkan < jumlah), maklumkan persekitaran luaran bahawa semua gambar telah dimuatkan
  30. * Tujuannya adalah untuk mengelakkan pengguna menunggu terlalu lama
  31. */    
  32. setTimeout(fungsi () {    
  33. dimuatkan < jumlah && (dimuatkan = jumlah, panggil balik && panggilan balik(dimuatkan / jumlah));    
  34. }, masa tamat * jumlah);    
  35. };
  36. "fungsi" === jenis tentukan && tentukan.cmd ? >fungsi () {
  37. pulangan pemuat
  38. }): window.imgLoader = pemuat;
  39. })();
  40. Penggunaan (sepadan dengan test.html dalam kod):

Kod XML/HTML

Salin kandungan ke papan keratan
<
  1. skrip src="../js/ imgLoader.js">skrip> 
  2. <
  3. skrip>  imgLoader(['../img/page1.jpg', '../img/page2.jpg', '../img/page3.jpg'], fungsi(peratusan){
  4. console.log(peratusan)
  5. });
  6. skrip>  Hasil jalankan:


2. Penerangan demo


Kesan yang diberikan pada permulaan artikel ini, halaman yang sepadan ialah index.html, terdapat dua isu yang perlu diterangkan tentang kesan ini : 1) Ia menggunakan idea skrin gelongsor yang diperkenalkan dalam blog sebelumnya
Prinsip karusel Hammer.js untuk melaksanakan fungsi skrin gelongsor mudah
dan membungkus beberapa logiknya dalam leret. js, Leret pembolehubah global disediakan kepada dunia luar Modul ini mempunyai kaedah init supaya fungsi berkaitan skrin gelongsor boleh dimulakan secara luaran dengan memanggil Swipe.init( Pada asalnya, kaedah init ini tidak disediakan akan dimulakan selepas js dimuatkan Fungsi, dengan kaedah init ini, logik skrin gelongsor boleh ditangguhkan sehingga pemuatan selesai untuk dimulakan. index.html merujuk sejumlah 5 js:

Kod XML/HTML

Salin kandungan ke papan keratan
  1. <skrip src="js/zepto.js ">skrip>    
  2. <skrip src="js/ transition.js">skrip>    
  3. <skrip src="js/ hammer.js">skrip>    
  4. <skrip src="js/ imgLoader.js">skrip>    
  5. <skrip src="js/ swipe.js">skrip>   

其中 imgloader.js 就是前面介绍图片加载器的实现, 前三个 js 都是为最后一个 swipe.js 服务的, 感兴趣的可以继续我的博客利用轮播原理结合 Hammer.js 实现简洁的滑屏功能了解相关内容。不过滑屏不是本文的重点,不了解swipe.js不会影响理视的重点,不了解swipe.js不会影响理视的重点,不了解我在demo中用到了3张比较大的图片,但是由于在本地环境,加载速度还是非常快,所以一开始的时候,很难看到预加载的效果加载的效果,最守家进度回调之前做一下延迟,这才可以看到前面gif图片一开始的那个memuatkan效果,实现方式是:

Kod XML/HTML复制内容到剪贴板
  1. //模拟加载慢的效果   
  2. var panggilan balik = [];    
  3. imgLoader(['img/page1.jpg', 'img/page2.jpg', 'img/page3.jpg'], fungsi (peratusan) {    
  4. var i = panggilan balik.panjang;    
  5. panggilan balik.push(fungsi(){    
  6. setTimeout(function(){    
  7. var peratusT = peratusan * 100;    
  8. $('#loader__info').html('Memuatkan '   (parseInt(percentT))   '%');    
  9. $('#loader__progress')[0].style.width = peratusT   '%';    
  10. jika (peratusan == 1) {    
  11. setTimeout(function(){    
  12. $('#loader').remove();    
  13. Swipe.init();    
  14. }, 600);    
  15. }    
  16. panggilan balik[i   1] && panggilan balik[i   1]();    
  17. },600);    
  18. });    
  19. jika(peratusan == 1) {    
  20. panggilan balik[0]();    
  21. }    
  22. });   

在真实环境,最好还是不要刻意去加这种延迟,没必要为了让用户看刻意去加这种延迟,没必要为了让用户看到作不效果,就浪费它不必要的等待时间,所以真实环境还是应该用下面的代码:

Kod XML/HTML复制内容到剪贴板
  1. imgLoader(['img/page1.jpg', 'img/page2.jpg', 'img/page3.jpg'], fungsi (peratusan) {    
  2. var peratusT = peratusan * 100;    
  3. $('#loader__info').html('Memuatkan '   (parseInt(percentT))   '%');    
  4. $('#loader__progress')[0].style.width = peratusT   '%';    
  5. jika (peratusan == 1) {    
  6. $('#loader').remove();    
  7. Swipe.init();    
  8. }    
  9. });   

3. Hinweise
Vorabladen ist ein relativ häufiger Implementierungseffekt, aber bei seiner Verwendung müssen einige Probleme beachtet werden:
1 ) Was verwenden
, wenn die Seite groß ist? Wenn die Seite größer als 3 MB ist, können Sie die Verwendung beim Mobiltelefontest in Betracht ziehen kann deutlich zeigen, dass das Laden langsam ist.
2) Versuchen Sie, Sprite-Bilder zu verwenden.
3) Versuchen Sie, beim Implementieren des Ladeeffekts keine Bilder zu verwenden. Auch wenn Sie diese verwenden möchten, sollten Sie sehr kleine Bilder verwenden, da sonst der Ladeeffekt dort hängen bleibt und es wird bedeutungslos sein.
4. Zusammenfassung
In diesem Artikel wird hauptsächlich ein einfacher Bild-Preloader vorgestellt, der bei Bedarf auf die Entwicklung mobiler h5-Seiten angewendet werden kann Sie können es auch ändern und zum Laden anderer Arten von Ressourcen verwenden, z. B. Audio- oder Videodateien. Schließlich bieten diese Arten von DOM-Objekten auch ähnliche Eigenschaften und Rückrufe wie Bildobjekte. Im Gegensatz zur Vorlademethode gibt es auch eine Technologie zum verzögerten Laden von Bildern. Es gibt bereits relativ einfach zu verwendende JQuery-Plug-Ins, aber es lohnt sich, mehr über deren Ideen und Implementierungspunkte zu erfahren Mach es, wenn ich Zeit für die Recherche habe. Gleichzeitig möchten wir Ihnen allen für Ihre anhaltende Unterstützung der Script House-Website danken!

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

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Cara memasang komponen versi lama Windows 10 DirectPlay Cara memasang komponen versi lama Windows 10 DirectPlay Dec 28, 2023 pm 03:43 PM

Ramai pengguna sentiasa menghadapi beberapa masalah apabila bermain beberapa permainan di win10, seperti skrin membeku dan skrin kabur Pada masa ini, kami boleh menyelesaikan masalah dengan menghidupkan fungsi directplay, dan kaedah operasi fungsi itu juga Sangat mudah. Cara memasang directplay, komponen lama win10 1. Masukkan "Panel Kawalan" dalam kotak carian dan bukanya 2. Pilih ikon besar sebagai kaedah tontonan 3. Cari "Program dan Ciri" 4. Klik di sebelah kiri untuk membolehkan atau matikan fungsi menang 5. Pilih versi lama di sini Hanya tandakan kotak

Asas pembangunan VUE3: menggunakan lanjutan untuk mewarisi komponen Asas pembangunan VUE3: menggunakan lanjutan untuk mewarisi komponen Jun 16, 2023 am 08:58 AM

Vue ialah salah satu rangka kerja bahagian hadapan yang paling popular pada masa ini, dan VUE3 ialah versi terkini rangka kerja Vue Berbanding dengan VUE2, VUE3 mempunyai prestasi yang lebih tinggi dan pengalaman pembangunan yang lebih baik, dan telah menjadi pilihan pertama banyak pembangun. Dalam VUE3, menggunakan extends untuk mewarisi komponen ialah kaedah pembangunan yang sangat praktikal Artikel ini akan memperkenalkan cara menggunakan extends untuk mewarisi komponen. Apa itu extends? Dalam Vue, extends ialah atribut yang sangat praktikal, yang boleh digunakan untuk komponen kanak-kanak diwarisi daripada ibu bapa mereka.

Bagaimana untuk melaksanakan komponen kalendar menggunakan Vue? Bagaimana untuk melaksanakan komponen kalendar menggunakan Vue? Jun 25, 2023 pm 01:28 PM

Vue ialah rangka kerja bahagian hadapan yang sangat popular Ia menyediakan banyak alat dan fungsi, seperti pembahagian, pengikatan data, pemprosesan acara, dll., yang boleh membantu pembangun membina aplikasi Web yang cekap, fleksibel dan mudah diselenggara. Dalam artikel ini, saya akan memperkenalkan cara melaksanakan komponen kalendar menggunakan Vue. 1. Analisis keperluan Pertama, kita perlu menganalisis keperluan komponen kalendar ini. Kalendar asas harus mempunyai fungsi berikut: memaparkan halaman kalendar bulan semasa bertukar kepada bulan sebelumnya atau bulan hadapan dengan mengklik pada hari tertentu;

Apakah maksud h5? Apakah maksud h5? Aug 02, 2023 pm 01:52 PM

H5 merujuk kepada HTML5, versi terkini HTML H5 ialah bahasa penanda yang berkuasa yang menyediakan pembangun dengan lebih banyak pilihan dan ruang kreatif Kemunculannya menggalakkan pembangunan teknologi Web dan menjadikan interaksi dan kesan halaman web lebih Cemerlang, sebagai teknologi H5. secara beransur-ansur matang dan menjadi popular, saya percaya ia akan memainkan peranan yang semakin penting dalam dunia Internet.

Komponen sudut dan sifat paparannya: memahami lalai bukan blok Komponen sudut dan sifat paparannya: memahami lalai bukan blok Mar 15, 2024 pm 04:51 PM

Tingkah laku paparan lalai untuk komponen dalam rangka kerja Angular bukan untuk elemen peringkat blok. Pilihan reka bentuk ini menggalakkan pengkapsulan gaya komponen dan menggalakkan pembangun untuk secara sedar menentukan cara setiap komponen dipaparkan. Dengan menetapkan paparan sifat CSS secara eksplisit, paparan komponen Sudut boleh dikawal sepenuhnya untuk mencapai reka letak dan responsif yang diingini.

Mari kita bincangkan tentang cara Vue memaparkan komponen secara dinamik melalui JSX Mari kita bincangkan tentang cara Vue memaparkan komponen secara dinamik melalui JSX Dec 05, 2022 pm 06:52 PM

Bagaimanakah Vue memaparkan komponen secara dinamik melalui JSX? Artikel berikut akan memperkenalkan kepada anda bagaimana Vue boleh menghasilkan komponen secara dinamik melalui JSX dengan cekap, saya harap ia akan membantu anda!

Bagaimana untuk membuka tetapan versi lama komponen win10 Bagaimana untuk membuka tetapan versi lama komponen win10 Dec 22, 2023 am 08:45 AM

Komponen versi lama Win10 perlu dihidupkan oleh pengguna sendiri dalam tetapan, kerana banyak komponen biasanya ditutup secara lalai Mula-mula kita perlu memasukkan tetapan yang sangat mudah komponen versi? Buka 1. Klik Start, kemudian klik "Win System" 2. Klik untuk masuk ke Control Panel 3. Kemudian klik program di bawah 4. Klik "Enable or turn off Win functions" 5. Di sini anda boleh memilih apa yang anda mahu untuk membuka

Amalan komponen Vue: pembangunan komponen halaman Amalan komponen Vue: pembangunan komponen halaman Nov 24, 2023 am 08:56 AM

Amalan komponen Vue: Pengenalan kepada pembangunan komponen halaman Dalam aplikasi web, fungsi halaman adalah komponen penting. Komponen paging yang baik hendaklah ringkas dan jelas dalam persembahan, kaya dengan fungsi, dan mudah untuk disepadukan dan digunakan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Vue.js untuk membangunkan komponen halaman yang sangat boleh disesuaikan. Kami akan menerangkan secara terperinci cara membangunkan menggunakan komponen Vue melalui contoh kod. Teknologi tindanan Vue.js2.xJavaScript (ES6) HTML5 dan persekitaran pembangunan CSS3

See all articles