滚动到 div 底部?

IT技术 javascript html ajax chat
2021-02-06 03:35:39

我正在使用 Ajax 请求创建聊天,我试图让消息 div 滚动到底部,但运气不佳。

我将所有内容都包装在这个 div 中:

#scroll {
    height:400px;
    overflow:scroll;
}

有没有办法在默认情况下使用 JS 让它滚动到底部?

有没有办法在ajax请求后让它滚动到底部?

6个回答

这是我在我的网站上使用的内容:

var objDiv = document.getElementById("your_div");
objDiv.scrollTop = objDiv.scrollHeight;
为什么不scrollTopMax代替scrollHeight
2021-03-13 03:35:39
当我动态添加图像时,这不起作用:(
2021-03-15 03:35:39
“现代”方式是使用 Element.scrollIntoView() -- developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
2021-03-15 03:35:39
@PaulDinh:我刚刚调查了这个问题,使用 scrollHeight 的 IE7 和更低版本存在问题。这里似乎是一种解决的IE7这里
2021-04-01 03:35:39
这种方法适用于所有浏览器吗?
2021-04-07 03:35:39

如果您使用jQuery scrollTop ,这会容易得多

$("#mydiv").scrollTop($("#mydiv")[0].scrollHeight);
不重复自己: $("#mydiv").scrollTop(function() { return this.scrollHeight; });
2021-03-12 03:35:39
您需要 [0] 从 jquery 元素获取 dom 元素以获取 scrollHeight
2021-04-03 03:35:39

你可以试试下面的代码:

function scrollToBottom (id) {
   var div = document.getElementById(id);
   div.scrollTop = div.scrollHeight - div.clientHeight;
}

使用 JQuery执行平滑滚动:

function scrollSmoothToBottom (id) {
   var div = document.getElementById(id);
   $('#' + id).animate({
      scrollTop: div.scrollHeight - div.clientHeight
   }, 500);
}

例子的jsfiddle

这就是为什么这样做的原因:

在此处输入图片说明

参考:scrollTopscrollHeightclientHeight

这真的是正确的答案,图片真的很有用
2021-03-10 03:35:39

使用jQuery 动画

$('#DebugContainer').stop().animate({
  scrollTop: $('#DebugContainer')[0].scrollHeight
}, 800);
请注意此答案如何使用.stop(),它可以防止多个动画出现问题。
2021-03-25 03:35:39

适用于所有当前浏览器的较新方法

this.scrollIntoView(false);
在此处查看支持哪些浏览器caniuse.com/?search=scrollIntoView
2021-03-22 03:35:39
这应该是公认的答案,因为旧的方法不再有效
2021-03-30 03:35:39
该方法scrollIntoView在父容器内的子元素上触发。那么如何使用它:将父级滚动到底部(如原始问题中所问)。
2021-03-30 03:35:39
如果 "this" 是 div 中可以滚动到的内容,就会出现这种情况
2021-04-03 03:35:39
您可以使用 scrollIntoView({ behavior: "smooth", block: "end" });
2021-04-08 03:35:39