Methode ohne erforderliches JavaScript (2023)
Hier ist eine Methode, die überhaupt kein JavaScript erfordert und reines (Flexbox) CSS verwendet. Ich habe die Methode etwas genauer hier erklärt.
Der Trick besteht darin, die Elemente in ein 'content'-Element zu setzen, das innerhalb eines column-reverse
Flexbox-Elements verpackt ist, das als 'Scroller' fungiert. Da sich die Elemente in einem anderen ('content') Container befinden, werden sie nicht 'umgedreht', sondern immer am unteren Rand ausgerichtet. Dadurch wird der Scroller immer dann zum unteren Rand gescrollt, wenn neue Elemente hinzugefügt werden.
Vorteile dieser Methode
Abgesehen davon, dass diese Methode nicht auf JavaScript angewiesen ist, besteht ein großer Vorteil darin, dass die Bildlaufposition fixiert bleibt, sobald der Benutzer begonnen hat, durch die Liste zu scrollen. Dies verhindert ein lästiges Springen des Inhalts, wenn neue Elemente hinzugefügt werden. Sobald der Benutzer wieder zum unteren Rand scrollt, bleibt die Liste beim Aktualisieren am unteren Rand gescrollt.
![Aufschlüsselung, klicken Sie für die Demo]()
Demo
Hinweis: Das JavaScript in der folgenden Demo ist nur für die Demo selbst erforderlich (um Elemente zur Liste hinzuzufügen und zu sehen, was passiert).
let scrollerContent = document.getElementById('scrollerContent');
document.getElementById('addItems').addEventListener('click', function() {
let newChild = scrollerContent.lastElementChild.cloneNode(true);
newChild.innerHTML = "Element " + (scrollerContent.children.length + 1);
scrollerContent.appendChild(newChild);
});
.scroller {
overflow: auto;
height: 100px;
display: flex;
flex-direction: column-reverse;
}
.scroller .scroller-content .item {
height: 20px;
transform: translateZ(0); /* behebt einen Fehler in Safari iOS, wo der Scroller nicht aktualisiert wird */
}
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
Weitere Elemente hinzufügen
0 Stimmen
In vielen Fällen kann dies mit nur CSS erreicht werden. Siehe diese Antwort.
0 Stimmen
Sie können dies ganz einfach mit Jquery erreichen:
code
$(document).ready(function() { var chatMessagesDiv = $('#scroll'); chatMessagesDiv.scrollTop(chatMessagesDiv[0].scrollHeight); });