Dans les applications de chat, il est courant d'avoir un conteneur de messages défilant qui occupe la majeure partie de l'écran. Cependant, lorsque le champ de saisie augmente dynamiquement en hauteur, la position de défilement de l'utilisateur peut être perturbée.
Lorsque le champ de saisie s'agrandit, il augmente effectivement la hauteur du div externe, ce qui pousse le conteneur de messages vers le bas. Cela fait perdre de vue à l'utilisateur les messages récents.
Une approche consiste à utiliser la méthode de cycle de vie ComponentDidUpdate de React pour calculer la hauteur du champ de saisie et avertir le conteneur de messages s'il change. . Cependant, cela peut entraîner des problèmes de performances et une transmission excessive de messages.
Une solution plus efficace consiste à utiliser CSS flexbox :
.chat-window { display: flex; flex-direction: column; height: 100%; } .chat-messages { flex: 1; height: 100%; overflow: auto; display: flex; flex-direction: column-reverse; } .chat-input { border-top: 1px solid #999; padding: 20px 5px; }
function updateScroll(el) { el.scrollTop = el.scrollHeight; } function scrollAtBottom(el) { return (el.scrollTop + 5 >= (el.scrollHeight - el.offsetHeight)); }
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!