vue3 聊天室 滚动到最底下的聊天
<div ref="chatContent" class="count">
<ul>
<li v-for="(i, index) in 20" :key="index">
<!-- 聊天内容 -->
</li>
</ul>
</div>
.count{ height: 外壳高度; overflow-y: scroll; }
// 滚动到底部 const chatContent = ref(null) //装会话的容器 const isScrolling = ref(false) //用于判断用户是否在滚动 function scrollToBottom() { nextTick(() => { //注意要使用nexttick以免获取不到dom if (!isScrolling.value) { chatContent.value.scrollTop = chatContent.value.scrollHeight - chatContent.value.offsetHeight console.log(chatContent.value.scrollTop) console.log(chatContent.value.scrollHeight) console.log(chatContent.value.offsetHeight) } }) } function handleScroll() { const scrollContainer = chatContent.value const scrollTop = scrollContainer.scrollTop const scrollHeight = scrollContainer.scrollHeight const offsetHeight = scrollContainer.offsetHeight if (scrollTop + offsetHeight < scrollHeight) { // 用户开始滚动并在最底部之上,取消保持在最底部的效果 isScrolling.value = true } else { // 用户停止滚动并滚动到最底部,开启保持到最底部的效果 isScrolling.value = false } } onMounted(async () => { await nextTick chatContent.value = document.getElementsByClassName('count')[0] scrollToBottom() // 监听滚动事件,判断用户滚动状态 chatContent.value.addEventListener('scroll', handleScroll) })
setTimeout(() => {
isScrolling.value = false
scrollToBottom()
}, 200)
1 | //哪里需要滚动哪里就调用,例如发送消息后调用,进入页面调用可以滚动到底部 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY