


Utilisez des composants simples de préchargement d'images pour améliorer l'expérience utilisateur des pages mobiles HTML5 _Compétences du didacticiel HTML5
Lorsque vous travaillez sur des pages mobiles h5, je pense que vous devez avoir rencontré une situation dans laquelle la page a été ouverte, mais les images à l'intérieur n'ont pas été chargées. Bien que ce problème n'affecte pas le fonctionnement de la page, il n'est pas propice. à l’expérience utilisateur. Quelle que soit la vitesse du réseau, il existe de nombreuses façons de résoudre ce problème : la plus basique consiste à optimiser les performances sous des aspects tels que la fusion des requêtes HTTP, la gestion du cache, la compression des images, etc. ; l'autre consiste à prétraiter toutes les images utilisées dans Dans le processus de chargement, lorsque l'utilisateur ouvre la page, le premier écran ne s'affiche pas immédiatement. Au lieu de cela, l'effet de chargement des ressources est affiché en premier, puis le contenu principal de la page est affiché une fois le chargement terminé. peut résoudre le problème. Bien que cet effet de chargement prenne du temps de navigation de l'utilisateur, nous pouvons le rendre plus beau et plus intéressant, afin qu'il n'affecte pas l'expérience utilisateur. Cet article met en œuvre cette idée et fournit un composant de préchargement d'image très simple. Il est simple à mettre en œuvre et ne présente pas de fonctionnalités faibles. Il devrait vous servir de référence lors de la création de pages mobiles.
Effet :
1. Idées de mise en œuvre
La balise img en HTML et background-imag en CSS déclencheront le navigateur pour charger l'image associée. Cependant, si l'image a déjà été chargée, le navigateur utilisera directement l'image chargée, elle peut donc être rendue sur le. page instantanément. Grâce à javascript, créez des objets Image, puis définissez l'attribut src de ces objets sur l'adresse de l'image à charger, ce qui peut également déclencher le chargement de l'image par le navigateur. Vous pouvez l'utiliser pour réaliser la fonction de préchargement de l'image : utilisez d'abord. ceux liés à la page. Masquez les éléments de l'image, puis utilisez js pour charger l'image, attendez que toutes les images soient chargées, puis affichez les éléments cachés. Cependant, ce n'est qu'une idée de base d'implémentation. Pour compléter un composant de préchargement avec une fonction plus robuste, il reste encore trois problèmes :
1) Problème de progression
Puisque le préchargement est effectué en même temps, un composant de préchargement doit également être effectué. L'effet est que la progression du chargement doit être notifiée au contexte externe en temps réel. Il existe deux façons d'implémenter la progression. La première est la taille des données chargées/taille totale des données, et la seconde est le nombre de fichiers chargés/nombre total de fichiers. Dans le navigateur, il n'est pas réaliste d'utiliser la première méthode. Il n'y a pas de méthode native pour le faire, nous ne pouvons donc utiliser que la deuxième méthode.
2) Le problème de l'échec du chargement des images
Par exemple, s'il y a 4 images, 50% d'entre elles ont été chargées, et une erreur se produit lors du chargement de la troisième image Si la progression est renvoyée à 75%. ? La réponse est : oui. Si cela n'est pas fait, la progression n'atteindra jamais 100 % et le contenu principal de la page n'aura aucune chance de s'afficher. Même si le chargement de l'image peut échouer, cela n'a rien à voir avec le chargeur. Peut-être que l'image elle-même échoue. n'existe pas ? Cela signifie que l’échec du chargement de l’image ne devrait pas affecter la fonctionnalité du chargeur.
3) Le problème du délai de chargement de l'image
L'image ne peut pas être chargée trop longtemps, sinon l'utilisateur restera dans l'effet de chargement et ne pourra pas voir le contenu principal, et le temps d'attente de l'utilisateur sera prolongé de manière incontrôlable, ce qui entraînera dans une baisse de l'expérience utilisateur. Cela va à l'encontre de l'intention initiale du chargeur. Par conséquent, un délai d'attente de chargement doit être défini pour chaque image. Si le chargement n'est pas terminé après l'expiration du délai de toutes les images, le chargement doit être activement abandonné, le contexte externe doit être informé que le chargement est terminé et le contenu principal doit être informé. affiché.
Sur la base des exigences ci-dessus, la mise en œuvre fournie dans cet article est :
- (fonction () {
- fonction isArray(obj) {
- return Object.prototype.toString.call(obj) === '[object Array]' ;
- }
- /**
- * @param imgList Liste des adresses d'images à charger, ['aa/asd.png','aa/xxx.png']
- * @param callback Le rappel après chaque image est chargé avec succès, et le "nombre total d'images chargées/nombre total d'images à charger" est transmis pour indiquer la progression
- * @param timeout Le délai d'attente pour le chargement de chaque image, la valeur par défaut est de 5 s
- */
- var loader = fonction (imgList, callback, timeout) {
- délai d'expiration = délai d'expiration || 5000 ;
- imgList = isArray(imgList) && imgList || [] ;
- callback = typeof(callback) === 'function' && callback;
- var total = imgList.length,
- chargé = 0,
- images = [],
- _on = fonction () {
- chargé < total && ( chargé, rappel && rappel (chargé / total));
- } ;
- si (!total) {
- retour rappel && rappel(1);
- }
- pour (var i = 0; i < total; i ) {
- images[i] = nouveau Image();
- images[i].onload = images[i].onerror = _on;
- images[i].src = imgList[i];
- }
- /**
- * S'il y a encore des images qui n'ont pas été chargées dans le délai d'attente * plage de temps totale (la condition de jugement est chargée < total), informez l'environnement externe que toutes les images ont été chargées
- * Le but est d'éviter aux utilisateurs d'attendre trop longtemps
- */
- setTimeout(fonction () {
- chargé < total && (chargé = total, rappel && rappel (chargé / total));
- }, délai d'expiration * total );
- };
- "fonction" === typede définir && définir.cmd définir(fonction () {
- retour chargeur
- }) : window.imgLoader = chargeur;
- })();
Utilisation (correspondant à test.html dans le code) :
- <script src="../js/ imgLoader.js">script>
- <script>
- imgLoader(['../img/page1.jpg', '../img/page2.jpg', '../img/page3.jpg'], function(pourcentage){
- console.log(pourcentage)
- });
- script>
Résultat de l'exécution :
2. Description de la démo
L'effet donné au début de cet article, la page correspondante est index.html, il y a deux problèmes qui doivent être résolus. être expliqué à propos de cet effet :
1) Il utilise l'idée d'écran coulissant introduite dans le blog précédent Principe du carrousel Hammer.js pour implémenter une simple fonction d'écran coulissant, et enveloppe une partie de sa logique dans le balayage. js, Une variable globale Swipe est fournie au monde extérieur. Ce module a une méthode init afin que les fonctions liées à l'écran coulissant puissent être initialisées en externe en appelant Swipe.init(). À l'origine, cette méthode init n'était pas fournie. sera initialisé après le chargement de la fonction js, avec cette méthode d'initialisation, la logique de l'écran coulissant peut être retardée jusqu'à ce que le chargement soit terminé pour s'initialiser. index.html fait référence à un total de 5 js :
- <script src="js/zepto.js ">script>
- <script src="js/ transition.js">script>
- <script src="js/ marteau.js">script>
- <script src="js/ imgLoader.js">script>
- <script src="js/ swipe.js">script>
Avec imgLoader.js, vous pouvez utiliser la fonction imgLoader.js, et js avec swipe.js. Il s'agit d'un système de gestion des ressources humaines pour les utilisateurs de Hammer.js.滑屏功能了解相关内容。不过滑屏不是本文的重点,不了解swipe.js不会影响理解本文的内容~
2 )虽然我在demo中用到了3张比较大的图片,但是由于在本地环境,加载速度还是非常快,所以一开始的时候,很难看到预加载的效果,最后只能想办法在每个进度回调之前做一下延迟,这才可以看到前面gif图片一开始的那个chargement效果,实现方式是:
- //模拟加载慢的效果
- var rappels = [];
- imgLoader(['img/page1.jpg', 'img/page2.jpg', 'img/page3.jpg'], function (pourcentage) {
- var i = rappels.length;
- callbacks.push(function(){
- setTimeout(function(){
- var percentT = pourcentage * 100 ;
- $('#loader__info').html('Loading ' (parseInt(percentT)) '%');
- $('#loader__progress')[0].style.width = percentT '%';
- si (pourcentage == 1) {
- setTimeout(function(){
- $('#loader').remove();
- Swipe.init();
- }, 600 );
- }
- rappels[i 1] && rappels[i 1]();
- },600) ;
- });
- si(pourcentage == 1) {
- rappels[0]();
- }
- });
在真实环境,最好还是不要刻意去加这种延迟,没必要为了让用户看到一个好看有趣的加载效果,就浪费它不必要的等待时间,所以真实环境还是应该用下面的代码:
- imgLoader(['img/page1.jpg', 'img/page2.jpg', 'img/page3.jpg'], function (pourcentage) {
- var percentT = pourcentage * 100 ;
- $('#loader__info').html('Loading ' (parseInt(percentT)) '%');
- $('#loader__progress')[0].style.width = percentT '%';
- si (pourcentage == 1) {
- $('#loader').remove();
- Swipe.init();
- }
- });
3. 注意事項
預先載入是一種比較常見的實現效果,但是在使用的時候,有些問題需要注意:
1)什麼時候用
頁面大的時候用,一般頁面大小超過3M就該考慮使用;頁內包含數據量比較大的圖片,在手機端測試能夠明顯看到加載緩慢的時候,可以考慮使用。
2)盡量使用sprite圖片
3)加載效果實現的時候,盡量不用圖片,即使要用也應該用很小的圖片,否則加載效果卡在那就沒有意義了。
4. 總結
本文主要介紹了一個簡單的圖片預加載器,可應用於h5移動頁面的開發當中,在它的思路之下,如果有必要的話,還可以對它進行一些改造,用它來加載其它類型的資源,比如音頻或者視頻文件,畢竟這些類型的DOM對像也都有提供類似Image對象的屬性和回調。與預先載入的方式相反的,還有一種圖片懶加載的技術,現在網上已經有比較好用的jquery插件了,不過還是很值的去深入了解下它的思路跟實現要點,等我有時間去研究研究。同時感謝大家一直以來對腳本之家網站的支持!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

De nombreux utilisateurs rencontrent toujours des problèmes lorsqu'ils jouent à certains jeux sur Win10, tels que le gel de l'écran et les écrans flous. À l'heure actuelle, nous pouvons résoudre le problème en activant la fonction de lecture directe, et la méthode de fonctionnement de la fonction est également très simple. Comment installer Directplay, l'ancien composant de Win10 1. Entrez "Panneau de configuration" dans la zone de recherche et ouvrez-le 2. Sélectionnez de grandes icônes comme méthode d'affichage 3. Recherchez "Programmes et fonctionnalités" 4. Cliquez sur la gauche pour activer ou désactiver les fonctions Win 5. Sélectionnez l'ancienne version ici Cochez simplement la case

Vue est actuellement l'un des frameworks frontaux les plus populaires, et VUE3 est la dernière version du framework Vue. Par rapport à VUE2, VUE3 a des performances plus élevées et une meilleure expérience de développement, et est devenu le premier choix de nombreux développeurs. Dans VUE3, utiliser extends pour hériter de composants est une méthode de développement très pratique. Cet article explique comment utiliser extends pour hériter de composants. Qu'est-ce qui s'étend ? Dans Vue, extends est un attribut très pratique, qui peut être utilisé pour que les composants enfants héritent de leurs parents.

Vue est un framework front-end très populaire. Il fournit de nombreux outils et fonctions, tels que la création de composants, la liaison de données, la gestion d'événements, etc., qui peuvent aider les développeurs à créer des applications Web efficaces, flexibles et faciles à entretenir. Dans cet article, je vais vous présenter comment implémenter un composant de calendrier à l'aide de Vue. 1. Analyse des exigences Tout d'abord, nous devons analyser les exigences de ce composant de calendrier. Un calendrier de base doit avoir les fonctions suivantes : afficher la page du calendrier du mois en cours ; prendre en charge le passage au mois précédent ou au mois suivant en cliquant sur un certain jour ;

H5 fait référence à HTML5, la dernière version de HTML. H5 est un langage de balisage puissant qui offre aux développeurs plus de choix et d'espace créatif. Son émergence favorise le développement de la technologie Web et rend l'interaction et l'effet des pages Web plus excellents. mûrit progressivement et devient populaire, je pense qu'il jouera un rôle de plus en plus important dans le monde d'Internet.

Comment Vue restitue-t-il dynamiquement les composants via JSX ? L'article suivant vous présentera comment Vue peut restituer efficacement et dynamiquement des composants via JSX. J'espère qu'il vous sera utile !

Le comportement d'affichage par défaut des composants du framework Angular ne concerne pas les éléments au niveau du bloc. Ce choix de conception favorise l'encapsulation des styles de composants et encourage les développeurs à définir consciemment la manière dont chaque composant est affiché. En définissant explicitement l'affichage des propriétés CSS, l'affichage des composants angulaires peut être entièrement contrôlé pour obtenir la mise en page et la réactivité souhaitées.

Les composants de l'ancienne version de Win10 doivent être activés par les utilisateurs eux-mêmes dans les paramètres, car de nombreux composants sont généralement fermés par défaut. Nous devons d'abord entrer les paramètres. L'opération est très simple. Suivez simplement les étapes ci-dessous. composants de version ? Ouvrir 1. Cliquez sur Démarrer, puis cliquez sur « Système Win » 2. Cliquez pour accéder au Panneau de configuration 3. Cliquez ensuite sur le programme ci-dessous 4. Cliquez sur « Activer ou désactiver les fonctions Win » 5. Ici, vous pouvez choisir ce que vous voulez. ouvrir

Cet article vous aidera à distinguer rapidement entre H5, WEB front-end, grand front-end et WEB full stack. J'espère qu'il sera utile aux amis dans le besoin !
