css 如何保持滚动条始终在底部?

bogh5gae  于 2023-02-01  发布在  其他
关注(0)|答案(6)|浏览(1054)

我在div元素中有一个滚动条,最初它的位置是顶部。每当我向div元素添加一些文本时,滚动条就不会移动。有没有什么办法,使div元素的滚动条总是在底部,而每当我向div元素添加一些文本时,滚动条也会自动移到底部?
下面是我的div元素:

<div class='panel-Body scroll' id='messageBody'></div>

和CSS类

.scroll {
            height: 450px;
            overflow: scroll;  
        }

我需要的是,最初的滚动条的位置应该是底部。
同样,当我点击发送消息时,我会将消息添加到div元素“messageBody”中。此时滚动条应该再次向下。
这是我的滚动条

的当前样式
我希望它始终为

先谢了。

aurhwmvo

aurhwmvo1#

var messageBody = document.querySelector('#messageBody');
messageBody.scrollTop = messageBody.scrollHeight - messageBody.clientHeight;
6bc51xsx

6bc51xsx2#

如果我没理解错你想要什么的话,这样的东西应该能达到你的目的。
getElementById()中的messageBody替换为您的聊天消息容器ID。

var chatHistory = document.getElementById("messageBody");
chatHistory.scrollTop = chatHistory.scrollHeight;

这将把消息容器滚动到底部。因为滚动位置是以像素而不是百分比记录的,所以默认情况下,当你向容器中添加更多元素时,滚动位置不会改变。
在聊天消息容器中添加新消息后执行此操作。

omjgkv6w

omjgkv6w3#

假设你的html代码是这样的。

    • 超文本标记语言**
<div id="parentDiv">
  <div class="people">1</div>
  <div class="people">2</div>
  <div class="people">3</div>
  <div class="people">4</div>
  <div class="people">5</div>
  <div class="people">6</div>
  <div class="people">7</div>
  <div class="people">8</div>
  <div class="people">9</div>
</div>

然后把你的js像这样包起来

    • 苏丹**
var objDiv = document.getElementById("parentDiv");
objDiv.scrollTop = objDiv.scrollHeight;

DEMO

atmip9wb

atmip9wb4#

给你。跟着这个概念走。

$('#messages').scrollTop($('#messages')[0].scrollHeight);
#chatbox-history {
  overflow: none;
  position: relative;
  width: 100%;
  height: 200px;
  border: 1px solid #ccc;
}
#messages {
  overflow: auto;
  position: absolute;
  bottom: 0;
  width: 100%;
  max-height: 200px;
}
#messages div {
  border: 1px solid #e2e4e3;
  margin: 5px;
  padding: 10px;
  background: #fafafa;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="chatbox-history">
  <div id="messages">
    <div>asdjf ;asd</div>
    <div>ajsd fa ;skd f;s</div>
    <div>asdjf ;akjs d;lf a;lksd fj</div>
    <div>ajsd fkaj s;dlf a;ljsdl;fkja;lsd f; asd</div>
    <div>Wassup?</div>
  </div>
</div>
ejk8hzay

ejk8hzay5#

那就是:messageBody.lastChild.scrollIntoView();//用于初始滚动到底部位置。
p.s.:页面加载后,消息处理程序应该在消息更新时调用此命令。

jdzmm42g

jdzmm42g6#

现在已经是2023了,你现在可以简单地使用Element.scrollIntoView()了!检查MDN documentation

var messageBody = document.querySelector('#messageBody');
messageBody.scrollIntoView();

相关问题