


Comment utiliser Vue 3 pour implémenter la fonction de chargement de défilement similaire aux enregistrements de chat WeChat?
Apr 04, 2025 pm 03:51 PMVue 3 réalise la charge de défilement vers le haut des enregistrements de chat WeChat: Maintenez la position de défilement
Lors du développement d'une application similaire à l'historique de chat WeChat, des messages plus historiques doivent être chargés lorsque l'utilisateur fait défiler vers le haut tout en gardant la position de la barre de défilement inchangée. Cet article montre comment implémenter cette fonctionnalité à l'aide de Vue 3.
Structure et problèmes de code d'origine:
Le code suivant montre la charge de défilement de base vers le haut, mais une fois le nouveau message chargé, la barre de défilement revient en haut:
<template> <div id="app"> <div class="container" ref="chatlistref"> <ul> <li v-for="item in msgs" :key="item">{{ article }}</li> </ul> </div> </div> </template> <script> import { createApp, ref, onMounted, nextTick } from 'vue'; const generateNumbers = (start, end) => { // ... (same as before) ... }; const app = createApp({ setup() { const msgs = ref(generateNumbers(1, 200)); const chatlistref = ref(null); const scrollToBottom = async () => { const chatListElement = chatlistref.value; if (chatListElement) { chatListElement.scrollTop = chatListElement.scrollHeight; } }; const handleScroll = (ev) => { const target = ev.target; if (target.scrollTop === 0) { msgs.value.unshift(...generateNumbers(201, 400)); // 問(wèn)題:此處加載新數(shù)據(jù)后,滾動(dòng)條會(huì)回到頂部 } }; onMounted(() => { scrollToBottom(); }); return { msgs, chatlistref, handleScroll }; } }); app.mount('#app'); </script> <style scoped> /* ... (same as before) ... */ </style>
Fonction d'amélioration handleScroll
:
Pour résoudre le problème du retour de la barre de défilement en haut, nous devons calculer la distance que la barre de défilement doit se déplacer après le chargement de nouvelles données et la remettre sur la position correcte. La fonction handleScroll
modifiée est la suivante:
const handlescroll = (ev) => { const cible = ev.target; if (target.scrolltop === 0) { const ScrollHeightBefore = Target.ScrollHeight; msgs.value.unshift (... generaTenumbers (201, 400)); NextTick (() => { const ScrollHeightAfter = Target.ScrollHeight; Target.scrollTop = ScrollHeightAfter - ScrollHeightBefore; }); } };
La clé est:
- Enregistrez
scrollHeight
avant d'ajouter de nouvelles données. - Utilisez
nextTick
pour vous assurer que le DOM est mis à jour, puis calculez la distance dont la barre de défilement doit déplacer (scrollHeightAfter - scrollHeightBefore
). - Définissez
scrollTop
sur la distance calculée pour maintenir la position relative de la barre de défilement après le chargement de nouvelles données.
Avec cette amélioration, l'application Vue 3 peut réaliser la fonction de chargement de défilement ascendante similaire aux enregistrements de chat WeChat et conserver la barre de défilement dans la même position relative après avoir chargé plus de messages, offrant une expérience utilisateur plus douce. N'oubliez pas d'ajouter les styles nécessaires à votre CSS pour vous assurer que le conteneur a des barres de défilement verticales ( overflow-y: auto;
).
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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)

Le filtre de fond est utilisé pour appliquer des effets visuels au contenu derrière les éléments. 1. Utilisez le filtre en toile de fond: flou (10px) et autre syntaxe pour obtenir l'effet de verre givré; 2. Prend en charge plusieurs fonctions de filtre telles que le flou, la luminosité, le contraste, etc. et peut être superposé; 3. Il est souvent utilisé dans la conception des cartes en verre, et il est nécessaire de s'assurer que les éléments chevauchent l'arrière-plan; 4. Les navigateurs modernes ont un bon support et @Supports peut être utilisé pour fournir des solutions de rétrogradation; 5. évitez les valeurs de flou excessive et redémarrez fréquents pour optimiser les performances. Cet attribut ne prend effet que lorsqu'il y a du contenu derrière les éléments.

Actuellement, JD.com n'a émis aucune stablecoins, et les utilisateurs peuvent choisir les plates-formes suivantes pour acheter des stablescoins grand public: 1. Binance est la plate-forme avec le plus grand volume de transaction au monde, prend en charge plusieurs paiements de monnaie fiduciaire et a une solide liquidité; 2. OKX a des fonctions puissantes, fournissant un service client de 7x24 heures et plusieurs méthodes de paiement; 3. Huobi a une grande réputation dans la communauté chinoise et a un système complet de contr?le des risques; 4. Gate.io a de riches types de devises, adaptés à l'exploration des actifs de niche après avoir acheté des staboins; 5. Il existe de nombreux types de devises répertoriées sur Kucoin, qui est propice à la découverte des premiers projets; 6. Bitget est caractérisé par des transactions de commande, avec des transactions P2P pratiques, et convient aux amateurs de trading social. Les plates-formes ci-dessus fournissent toutes des services d'achat de stablecoin s?r et fiable.

Les feuilles de styles d'agent utilisateur sont les styles CSS par défaut que les navigateurs s'appliquent automatiquement pour garantir que les éléments HTML qui n'ont pas ajouté de styles personnalisés sont toujours lisibles de base. Ils affectent l'apparence initiale de la page, mais il existe des différences entre les navigateurs, ce qui peut conduire à un affichage incohérent. Les développeurs résolvent souvent ce problème en réinitialisant ou standardiquant les styles. Utilisez le panneau de calcul ou de style des outils du développeur pour afficher les styles par défaut. Les opérations de couverture courantes comprennent la compensation des marges internes et extérieures, la modification des soulignements de liaison, l'ajustement des tailles de titre et les styles de bouton unificateurs. Comprendre les styles d'agent utilisateur peut aider à améliorer la cohérence entre les navigateurs et à permettre un contr?le de disposition précis.

Définissez @ KeyframesBounce avec 0%, 100% attranslatey (0) et 50% d'attranslatey (-20px) toCreateAbasicBounce.2.ApplyTheAnimationToanElementsinganimation: Bounce0.6SEASE-OU-OUTINFINITEFORSMOTH, ContinuousMotion.3.

Créez un composant de commutation de thème, utilisez la case à cocher pour lier l'état d'IsdarkMode et appeler la fonction toggletheme; 2. Vérifiez les préférences locales et systèmes dans le montage pour initialiser le thème; 3. Définissez la fonction ApplicationTheme pour appliquer la classe en mode noir à l'élément HTML aux styles de commutation; 4. Utilisez les propriétés personnalisées CSS pour définir des variables lumineuses et sombres et écrasez les styles par défaut via la classe en mode noir; 5. Introduisez le composant Themeswitcher dans le modèle d'application principal pour afficher le bouton à bascule; 6. écouter éventuellement les modifications préfères-color pour synchroniser le thème du système. Cette solution utilise Vue

Créez le composant modal.vue, utilisez l'API de composition pour définir les accessoires qui re?oivent ModelValue et Title, et utilisez EMIT pour déclencher l'événement Update: ModelValue pour obtenir une liaison bidirectionnelle du modèle V; 2. Utilisez l'emplacement pour distribuer du contenu dans le modèle, en prenant en charge la machine à sous par défaut et en en-tête et en bassin de fente nommés; 3. Utilisez @ click.f pour fermer la fenêtre contextuelle en cliquant sur le calque de masque; 4. Importez le modal dans le composant parent et utilisez Ref pour contr?ler l'écran et le masquer, et utilisez-le en combinaison avec V-model; 5. Les améliorations facultatives incluent l'écoute de la clé d'échappement, l'ajout d'animation de transition et de verrouillage de mise au point. Ce composant de bo?te modale a bon

Nuxt3isareimaginedvue-basez-basta-frameworkthatenhancesdevereverexperiencendrperformancethroughmodernarchitecture.itisRenderer-agnostic, soutiensr, ssg, andcsr, andushesthenitrongineforframework-agnosticdeployantacrosplaformslikevercel, netlify, orereploymentacrossplatformslikercel, netlify, orereploymentacrossplatformslikercel, netlify, orera-cloymentAcrossPlatformsLILINIF

Utilisez l'image en arrière-plan et le clip de fond: Texte pour réaliser l'effet de gradient de texte CSS; 2. Vous devez définir -Webkit-Background-Clip: Texte et -Webkit-Text-Fill-Color: Transparent pour assurer la compatibilité du navigateur; 3. Vous pouvez personnaliser les gradients linéaires ou radiaux, et il est recommandé d'utiliser du texte audacieux ou grand pour améliorer l'effet visuel; 4. Il est recommandé de définir la couleur comme couleur alternative pour les environnements non pris en charge; 5. Les alternatives peuvent utiliser -webkit-mask-image pour obtenir des effets plus complexes, mais ils conviennent principalement aux scénarios avancés; Cette méthode est simple, a une bonne compatibilité et visuelle
