In Chat-Anwendungen ist es üblich, dass ein scrollbarer Nachrichtencontainer Platz einnimmt den größten Teil des Bildschirms. Wenn die Höhe des Eingabefelds jedoch dynamisch zunimmt, kann die Scrollposition des Benutzers gestört werden.
Wenn das Eingabefeld wächst, erhöht es effektiv die Höhe des äußeren Div, wodurch die Höhe des Eingabefelds erhöht wird drückt den Nachrichtencontainer nach unten. Dies führt dazu, dass der Benutzer die letzten Nachrichten aus den Augen verliert.
Ein Ansatz besteht darin, die Lebenszyklusmethode „componentDidUpdate“ von React zu verwenden, um die Höhe des Eingabefelds zu berechnen und den Nachrichtencontainer zu benachrichtigen, wenn sie sich ändert . Dies kann jedoch zu Leistungsproblemen und übermäßigem Nachrichtenaustausch führen.
Eine effizientere Lösung ist die Verwendung von 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)); }
Das obige ist der detaillierte Inhalt vonWie behalte ich ein scrollbares Chat-Div am unteren Rand bei, wenn die Größe des Eingabefelds geändert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!