首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聊天框向下滚动新消息

聊天框向下滚动新消息
EN

Stack Overflow用户
提问于 2020-07-23 00:26:01
回答 1查看 108关注 0票数 0

我希望当用户打开聊天或写任何消息时,滚动条向下滚动以查看最新消息。为了完成任务,我找到了以下我想使用的答案。https://stackoverflow.com/a/21067431/12051965

问题是,它对滚动条没有任何影响,它仍然在chatbox的顶部,如果有人能告诉我我做错了什么,我将不胜感激。

代码语言:javascript
复制
let chat = document.getElementById("chat-messages-main-div-id");
window.onload = toBottom;

function toBottom() { 
  const isScrolledToBottom = chat.scrollHeight - chat.clientHeight <= chat.scrollTop + 1;
  if (isScrolledToBottom) {
    chat.scrollTop = chat.scrollHeight - chat.clientHeight;
  }
}
代码语言:javascript
复制
.chat-messages-main-div {
  width: 100%;
  height: inherit;
  overflow: overlay;
  overflow-y: scroll;
  display: flex;
  flex-direction: column;
  padding-left: 2%;
  padding-right: 2%;
  box-sizing: border-box;
  padding-bottom: 15px;
}
代码语言:javascript
复制
<div id="chat-messages-main-div-id" class="chat-messages-main-div" onload="toBottom">
   ....
</div>

EN

回答 1

Stack Overflow用户

发布于 2020-07-23 01:52:34

代码片段有两个问题,第一个问题来自height: inherit,它使你的div与父元素一起增长,所以你看到的滚动条是一个父节点(第一个固定高度的父节点或窗口对象)滚动条而不是chat节点,div或它的父节点的高度必须受到限制才能工作,而且你在toBottom函数中的比较应该是>=而不是<= ( scrollTop属性是从顶部滚动的像素数),但我建议你使用更简单的方法(如果你只需要转到滚动的最高底部,你就不需要检查或计算位置了):

代码语言:javascript
复制
function toBottom() { 
  chat.scroll(0, chat.scrollHeight)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63038883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档