Maison Applet WeChat Développement de mini-programmes L'applet WeChat implémente une disposition de flux en cascade et un chargement illimité

L'applet WeChat implémente une disposition de flux en cascade et un chargement illimité

Apr 04, 2017 am 11:57 AM

La mise en page en cascade est une mise en page populaireLa plus typique l'un est Pinterest.com. La hauteur de chaque carte est différente, formant une beauté inégale

Dans HTML5, nous pouvons en trouver de nombreux basés sur celle-ci. 🎜>jQuery peut facilement créer une telle mise en page. Dans les mini-programmes WeChat, nous pouvons également obtenir cet effet, mais en raison du mini-programme framework Il existe encore quelques différences dans les idées de mise en œuvre pour certaines fonctionnalités.

Aujourd'hui, nous allons voir comment implémenter cette disposition de flux en cascade dans un mini programme :

L'applet WeChat implémente une disposition de flux en cascade et un chargement illimité

Mini programme de disposition de flux en cascade

Ce que nous voulons implémenter est une disposition fixe à 2 colonnes, puis charger dynamiquement les données

image dans ces deux colonnes (pendant le chargement, l'image entrante sera placée dans la colonne de gauche ou de droite colonne en fonction de la taille réelle de l'image).

/* 单个图片容器的样式 */
.img_item {
  width: 48%;
  margin: 1%;
  display: inline-block;
  vertical-align: top;
}
Copier après la connexion
Nous savons qu'en HTML, si nous voulons charger dynamiquement des images, nous utilisons généralement

new Image() pour créer un image objet , puis utilisez-le pour charger dynamiquement une image pointée par l'URL et obtenir la taille réelle de l'image et d'autres informations. Il n'y a pas d'objet JS correspondant pour gérer l'image. En fait, nous pouvons utiliser le composant dans wxml pour compléter une telle fonction, même si cela est un peu compliqué, cela peut toujours être fait pour répondre à nos exigences fonctionnelles.

nous pouvons transmettre les informations de l'image à charger dans wxml via la
<!-- 在页面上放一个隐藏区域,并用image组件去加载一个或多个图片资源 -->
<view style="display:none">
  <image wx:for="{{images}}" wx:key="id" id="{{item.id}}" src="{{item.pic}}" bindload="onImageLoad"></image>
</view>
Copier après la connexion
liaison de données

et laisser le composant charger la ressource image, puis lorsque l'image est chargée, utilisez. la fonction de traitement d'événement spécifiée par bindload pour un traitement ultérieur Jetons un coup d'œil à la définition dans le fichier Page onImageLoad. des informations riches sur le composant de l'objet d'événement entrant e, y compris la taille réelle de l'image chargée via celui-ci, puis nous affichons l'image en fonction des besoins réels sur la page pour calculer la taille après la mise à l'échelle. même rapport. Ensuite, nous pouvons décider sur quel côté placer l'image actuellement chargée en fonction de la hauteur actuelle du contenu accumulé des colonnes de gauche et de droite

Voici le code wxml affiché dans le. deux colonnes d'images, nous pouvons voir que sur le composant , nous avons configuré la fonction d'écoute des événements en utilisant bindscrolltolower lors du défilement vers le bas, loadImages sera déclenché pour charger l'ensemble de données d'image suivant. , formant ainsi un chargement infini :
let col1H = 0;
let col2H = 0;

Page({

    data: {
        scrollH: 0,
        imgWidth: 0,
        loadingCount: 0,
        images: [],
        col1: [],
        col2: []
    },

    onLoad: function () {
        wx.getSystemInfo({
            success: (res) => {
                let ww = res.windowWidth;
                let wh = res.windowHeight;
                let imgWidth = ww * 0.48;
                let scrollH = wh;

                this.setData({
                    scrollH: scrollH,
                    imgWidth: imgWidth
                });

                //加载首组图片
                this.loadImages();
            }
        })
    },

    onImageLoad: function (e) {
        let imageId = e.currentTarget.id;
        let oImgW = e.detail.width;         //图片原始宽度
        let oImgH = e.detail.height;        //图片原始高度
        let imgWidth = this.data.imgWidth;  //图片设置的宽度
        let scale = imgWidth / oImgW;        //比例计算
        let imgHeight = oImgH * scale;      //自适应高度

        let images = this.data.images;
        let imageObj = null;

        for (let i = 0; i < images.length; i++) {
            let img = images[i];
            if (img.id === imageId) {
                imageObj = img;
                break;
            }
        }

        imageObj.height = imgHeight;

        let loadingCount = this.data.loadingCount - 1;
        let col1 = this.data.col1;
        let col2 = this.data.col2;

        //判断当前图片添加到左列还是右列
        if (col1H <= col2H) {
            col1H += imgHeight;
            col1.push(imageObj);
        } else {
            col2H += imgHeight;
            col2.push(imageObj);
        }

        let data = {
            loadingCount: loadingCount,
            col1: col1,
            col2: col2
        };

        //当前这组图片已加载完毕,则清空图片临时加载区域的内容
        if (!loadingCount) {
            data.images = [];
        }

        this.setData(data);
    },

    loadImages: function () {
        let images = [
            { pic: "../../images/1.png", height: 0 },
            { pic: "../../images/2.png", height: 0 },
            { pic: "../../images/3.png", height: 0 },
            { pic: "../../images/4.png", height: 0 },
            { pic: "../../images/5.png", height: 0 },
            { pic: "../../images/6.png", height: 0 },
            { pic: "../../images/7.png", height: 0 },
            { pic: "../../images/8.png", height: 0 },
            { pic: "../../images/9.png", height: 0 },
            { pic: "../../images/10.png", height: 0 },
            { pic: "../../images/11.png", height: 0 },
            { pic: "../../images/12.png", height: 0 },
            { pic: "../../images/13.png", height: 0 },
            { pic: "../../images/14.png", height: 0 }
        ];

        let baseId = "img-" + (+new Date());

        for (let i = 0; i < images.length; i++) {
            images[i].id = baseId + "-" + i;
        }

        this.setData({
            loadingCount: images.length,
            images: images
        });
    }

})
Copier après la connexion

D'accord, c'est un exemple très simple. Si vous avez une meilleure méthode, n'hésitez pas à la partager.
<scroll-view scroll-y="true" style="height:{{scrollH}}px" bindscrolltolower="loadImages">
  <view style="width:100%">
    <view class="img_item">
      <view wx:for="{{col1}}" wx:key="id">
        <image src="{{item.pic}}" style="width:100%;height:{{item.height}}px"></image>
      </view>
    </view>
    <view class="img_item">
      <view wx:for="{{col2}}" wx:key="id">
        <image src="{{item.pic}}" style="width:100%;height:{{item.height}}px"></image>
      </view>
    </view>
  </view>
</scroll-view>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment créer une disposition de défilement infini et de flux en cascade à l'aide de Vue ? Comment créer une disposition de défilement infini et de flux en cascade à l'aide de Vue ? Jun 27, 2023 pm 01:32 PM

Vue.js est un framework JavaScript populaire qui permet aux développeurs de créer facilement des applications Web dynamiques et réactives. Parmi eux, il est particulièrement apprécié par les développeurs pour ses puissantes capacités de développement de composants. Le défilement infini et la disposition en cascade sont devenus l'une des fonctionnalités indispensables du développement Web moderne. Cet article vise à présenter comment utiliser Vue.js, combiné avec certaines bibliothèques tierces, pour implémenter des fonctions de défilement infini et de disposition de flux en cascade. Réaliser un défilement infini défilement infini (Infinit

Comment utiliser HTML et CSS pour implémenter la disposition d'affichage des produits en cascade Comment utiliser HTML et CSS pour implémenter la disposition d'affichage des produits en cascade Oct 21, 2023 am 09:25 AM

Comment utiliser HTML et CSS pour implémenter la disposition d'affichage des produits en cascade. La disposition en cascade est une méthode de conception Web courante, qui se caractérise par la présentation d'un effet visuel complexe, dynamique et ordonné. L'application d'une disposition en cascade dans les pages Web d'affichage des produits peut améliorer l'effet d'affichage des produits et attirer l'attention des utilisateurs. Cet article explique comment utiliser HTML et CSS pour implémenter la présentation d'affichage des produits en cascade et fournit des exemples de code spécifiques. 1. Structure HTML Tout d'abord, nous devons construire une structure HTML de base pour s'adapter

Comment utiliser la propriété flex de CSS3 pour créer un effet de disposition de flux en cascade ? Comment utiliser la propriété flex de CSS3 pour créer un effet de disposition de flux en cascade ? Sep 09, 2023 am 08:39 AM

Comment utiliser la propriété flex de CSS3 pour créer un effet de disposition de flux en cascade ? Dans la conception Web, la mise en page en cascade est une méthode de mise en page courante et populaire. Il se caractérise par la présentation du contenu en colonnes et en hauteurs de rangées irrégulières, créant une esthétique semblable à une cascade. Dans le passé, la mise en œuvre d'une disposition en cascade nécessitait l'utilisation d'un code JavaScript complexe pour calculer la position et la taille des éléments. Cependant, avec le développement de CSS3, nous pouvons utiliser sa puissante propriété flex pour le rendre plus simple.

Conseils pour implémenter une disposition de flux en cascade de cartes réactive à l'aide de CSS Conseils pour implémenter une disposition de flux en cascade de cartes réactive à l'aide de CSS Nov 21, 2023 am 08:26 AM

Conseils pour implémenter une mise en page en cascade de cartes réactives à l'aide de CSS Avec la popularité des appareils mobiles et la diversification du contenu Web, la conception réactive est devenue l'une des exigences de base du développement Web moderne. Parmi eux, la disposition des cartes et la disposition des flux en cascade sont progressivement devenues des styles de conception populaires. Cet article explique comment utiliser CSS pour implémenter une disposition en cascade de cartes réactive et fournit des exemples de code spécifiques. 1. Structure HTML Tout d'abord, nous devons définir la structure d'un ensemble de cartes en HTML, par exemple en utilisant &lt;ul&gt;

Comment utiliser la mise en page CSS Flex pour implémenter la mise en page du flux en cascade Comment utiliser la mise en page CSS Flex pour implémenter la mise en page du flux en cascade Sep 27, 2023 pm 04:22 PM

Comment utiliser la mise en page élastique CSSFlex pour implémenter la mise en page de flux en cascade Avec le développement continu de la conception Web, la mise en page de flux en cascade est devenue une méthode de mise en page très populaire. Contrairement à la disposition en grille traditionnelle, la disposition du flux en cascade peut s'adapter à la taille de l'écran et présente une sensation de flux unique. Dans cet article, nous présenterons comment utiliser la disposition élastique CSSFlex pour implémenter la disposition de flux en cascade et fournirons des exemples de code spécifiques. La mise en page élastique CSSFlex est un modèle de mise en page puissant qui applique di

Comment implémenter la disposition du flux en cascade à l'aide de HTML et CSS Comment implémenter la disposition du flux en cascade à l'aide de HTML et CSS Oct 24, 2023 am 09:33 AM

Comment utiliser HTML et CSS pour implémenter la mise en page en cascade. La mise en page en cascade (Waterfall Layout) est une méthode de mise en page de page Web courante. Elle peut faire apparaître le contenu de la page Web comme un flux en cascade. La hauteur de chaque colonne peut être différente, ce qui fait que le contenu de la page Web apparaît comme un flux en cascade. la page Web est plus belle et amusante. Dans cet article, nous présenterons comment utiliser HTML et CSS pour implémenter la mise en page en cascade, avec des exemples de code spécifiques. Tout d’abord, examinons la structure HTML requise. Afin d'implémenter la disposition du flux en cascade, nous devons utiliser

Comment résoudre le problème du chargement infini du champ de recherche dans Win10 Comment résoudre le problème du chargement infini du champ de recherche dans Win10 Dec 26, 2023 pm 10:05 PM

Lorsqu'un utilisateur utilise la zone de recherche gagnante, les éléments de recherche continuent de se charger et aucun élément n'est affiché. Généralement, la solution peut être résolue en ouvrant Windows PowerShell (administrateur) et en saisissant des commandes. Examinons la solution détaillée au chargement infini. du champ de recherche win10. La zone de recherche Win10 se charge à l'infini : 1. Cliquez sur le menu Démarrer - recherchez le dossier Windows PowerShell. 2. Cliquez sur le fichier WindowsPowerShell - cliquez avec le bouton droit sur WindowsPowerShell - sélectionnez Exécuter en tant qu'administrateur. 3. Affichez la commande dans la fenêtre de commande. Get-AppXPackage-NameMicrosoft.Windows.

Utilisez uniapp pour obtenir un effet de disposition du flux en cascade Utilisez uniapp pour obtenir un effet de disposition du flux en cascade Nov 21, 2023 am 10:25 AM

Utilisez Uniapp pour obtenir un effet de mise en page de flux en cascade. La mise en page de flux en cascade est un formulaire de mise en page de page Web courant. Sa caractéristique est que le contenu est disposé en colonnes irrégulières pour former un effet de type flux en cascade. Dans le développement mobile, le framework Uniapp peut être utilisé pour obtenir facilement des effets de disposition de flux en cascade. Cet article explique comment utiliser Uniapp pour implémenter la disposition en cascade et fournit des exemples de code spécifiques. 1. Créez le projet Uniapp. Tout d'abord, nous devons installer l'outil de développement HbuilderX sur l'ordinateur.

See all articles