Scrollbare div-stick nach unten, wenn die äußeren div-änderungen in der Größe

Hier ist ein Beispiel-chat-app ->

Scrollbare div-stick nach unten, wenn die äußeren div-änderungen in der Größe

Die Idee hier ist, um die .messages-container nehmen so viel von dem Bildschirm, wie Sie können. Innerhalb .messages-container, .scroll hält die Liste der Nachrichten, und in Fall gibt es mehr Nachrichten, die dann die Größe des Bildschirms, scrollt.

Nun, betrachten diesen Fall:

  1. Der Benutzer führt einen Bildlauf auf der Unterseite von der Gespräch
  2. Die .text-input dynamisch größer

Nun, statt die user bleiben gerollt um die Unterseite des Gesprächs, der text-input erhöht, und Sie nicht mehr auf den Grund sehen.

Einen Weg, um es zu beheben, wenn wir reagieren, berechnen Sie die Höhe der text-input, und wenn sich etwas ändert, lassen .Nachrichten-container weiß

componentDidUpdate() {
  window.setTimeout(_ => {
    const newHeight = this.calcHeight();
    if (newHeight !== this._oldHeight) {
      this.props.onResize();
    }
    this._oldHeight = newHeight;
  });
}

Aber, dies verursacht sichtbare performance-Probleme, und es ist traurig, übergeben werden Nachrichten wie diese.

Gibt es eine bessere Möglichkeit? Könnte ich den Einsatz von css in einer Weise, um auszudrücken, dass, wenn .text-input-erhöht, ich möchte im wesentlichen shift up alle .Nachrichten-container

  • Bitte erläutern Sie das css/js verwendet, um zu wachsen die text-Eingabe.
  • Können Sie eine Geige besser zu aufwendige dein problem?
  • Über die Größe des input-Textes, darf ich Fragen, warum ein Benutzer sollte in der Lage sein, das zu tun? ... Die meisten chat-apps nicht, und wenn Sie es tun, Sie nicht step-up-Nachrichten, wenn ein Benutzer die Größe ändern, damit die Benutzer eine bewusst dieses Verhalten (Skype zum Beispiel).
  • Warum willst du die Größe des text-input?
  • Die chat-app, die wir verwenden bei der Arbeit nicht lassen Sie das Feld "Eingabe" geändert werden, und es ist ein sehr praktisches feature (nicht das Gespräch Bildlauf nach unten, aber es wäre schön, wenn es auch Tat). Normalerweise habe ich die Größe auf nur eine oder zwei Zeilen, so dass ich sehen kann, mehr von der Konversation, aber manchmal ich brauche, um längere Kommentare dazu kann gehören, dass copy/Paste-Inhalt, code-Schnipsel, oder sogar Listen mit Aufzählungszeichen. In diesen Fällen, die ich mag in der Lage sein zu sehen, wie mein ganzer Kommentar, bevor ich Sie senden.
Schreibe einen Kommentar