Maison >interface Web >tutoriel CSS >Comment garder une division de discussion défilante bloquée en bas lorsque le conteneur externe est redimensionné ?

Comment garder une division de discussion défilante bloquée en bas lorsque le conteneur externe est redimensionné ?

DDD
DDDoriginal
2024-12-01 09:58:09378parcourir

How to Keep a Scrollable Chat Div Stuck to the Bottom When the Outer Container Resizes?

Div défilable pour coller vers le bas, lorsque la div externe change de taille

Problème :

Dans une interface d'application de chat, un div déroulant contenant des messages doit rester en bas du div externe, même si le div externe change dans taille. Par exemple, lorsque l'utilisateur ajuste la taille de la zone de saisie de texte, le message div doit rester en bas.

Solution :

1. Approche CSS :

Utilisez flex-direction : column-reverse ; pour la div externe. Cela inverse l'ordre des éléments dans le conteneur flexible, plaçant ainsi le message div en bas.

.outer-div {
  display: flex;
  flex-direction: column-reverse;
}

.message-div {
  flex: 1;
  overflow-y: scroll;
}

2. Approche JavaScript :

Si la solution CSS est incompatible avec certains navigateurs, vous pouvez utiliser JavaScript pour gérer le redimensionnement et le repositionnement du message div :

// Resize function to adjust message div height
function resizeMessageDiv() {
  const messageDiv = document.querySelector('.message-div');
  messageDiv.style.height = calcMessageDivHeight();
}

// Helper function to calculate the message div height
function calcMessageDivHeight() {
  const outerDiv = document.querySelector('.outer-div');
  return outerDiv.clientHeight - document.querySelector('.text-input').clientHeight;
}

// Event listener for text input changes
document.querySelector('.text-input').addEventListener('input', resizeMessageDiv);

window.addEventListener('load', resizeMessageDiv); // Initial resize on page load

Supplémentaire Remarque :

Bien que la solution JavaScript soit plus flexible et gère mieux la compatibilité des navigateurs, elle nécessite de garder une trace des événements et de mettre à jour manuellement le hauteur du message div, ce qui peut introduire une surcharge de performances et être moins efficace que l'approche CSS dans certains scénarios.

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:
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