我正在使用Ajax请求创建一个聊天,我试图让消息div滚动到底部,但没有成功。
我将所有内容都装进了这个div中:
#scroll {
height:400px;
overflow:scroll;
}
是否有一种使用JS默认情况下保持滚动到底部的方法?
在ajax请求后是否有一种保持滚动到底部的方法?
我正在使用Ajax请求创建一个聊天,我试图让消息div滚动到底部,但没有成功。
我将所有内容都装进了这个div中:
#scroll {
height:400px;
overflow:scroll;
}
是否有一种使用JS默认情况下保持滚动到底部的方法?
在ajax请求后是否有一种保持滚动到底部的方法?
这是我在我的网站上使用的内容:
var objDiv = document.getElementById("your_div");
objDiv.scrollTop = objDiv.scrollHeight;
scrollTopMax
而是 scrollHeight
? - aivenscrollTopMax
是非标准的,请参见 https://caniuse.com/mdn-api_element_scrolltopmax - Tobia如果你正在使用 jQuery scrollTop,这会更容易:
$("#mydiv").scrollTop($("#mydiv")[0].scrollHeight);
尝试以下代码:
const scrollToBottom = (id) => {
const element = document.getElementById(id);
element.scrollTop = element.scrollHeight;
}
你也可以使用jQuery使滚动更加平滑:
const scrollSmoothlyToBottom = (id) => {
const element = $(`#${id}`);
element.animate({
scrollTop: element.prop("scrollHeight")
}, 500);
}
这里是演示
它的工作原理如下:
$('#DebugContainer').stop().animate({
scrollTop: $('#DebugContainer')[0].scrollHeight
}, 800);
scrollIntoView
在父容器内的子元素上触发。那么如何使用它来将父容器滚动到底部(正如原问题所问)。 - Gil EpshtainscrollIntoView({ behavior: "smooth", block: "end" });
。该代码可使页面平滑地滚动至目标元素底部位置。 - giovannipdsvar mydiv = $("#scroll");
mydiv.scrollTop(mydiv.prop("scrollHeight"));
jQuery 1.6及以上版本适用
用 JavaScript 实现平滑滚动:
document.getElementById('messages').scrollIntoView({ behavior: 'smooth', block: 'end' });
替代方案
function scrollToBottom(element) {
element.scroll({ top: element.scrollHeight, behavior: 'smooth' });
}
如果您不想依赖于 scrollHeight
,以下代码可以帮助:
$('#scroll').scrollTop(1000000);
setTimeout(() => {
var objDiv = document.getElementById('div_id');
objDiv.scrollTop = objDiv.scrollHeight
}, 0)
这是我创建的StcakBlitz链接,展示了一个问题及其解决方案:https://stackblitz.com/edit/angular-ivy-x9esw8
code
$(document).ready(function() { var chatMessagesDiv = $('#scroll'); chatMessagesDiv.scrollTop(chatMessagesDiv[0].scrollHeight); }); - Ravindu Lokumanna