vue实现聊天栏定位到最底部(超简单、可直接复制使用)

原理

通过watch监听聊天内容的加载,一旦加载完成或者数据更新触发vue的数据监听时,就重新修改【滚动滑钮到滚动条顶部的距离=滚动条的高度】,从而实现定位到底部的效果。

实现

1、布局

新建一个div(聊天框,如下),给他一个id,一会要用到

 然后记得给这个div的y轴一个滚动条,如下:

.dlog_content{
  overflow-y: auto;
  overflow-x: hidden;
}

 2、JavaScript代码(核心)

这里的messnowList是我的消息储存集合,用于判断数据变化,这个可以根据你实际情况修改,通过id绑定刚才的聊天框div,然后修改实现定位底部

<script>

export default {
  data () {
   
  },
  watch: {
    // 监听当前消息列表,更新时,保持滚动条位于底部
    messnowList: function scrollToBottom () {
      this.$nextTick(() => {
        var message = document.getElementById('content_overflow')
        // 滚动滑钮到滚动条顶部的距离=滚动条的高度
        message.scrollTop = message.scrollHeight
      })
    }
  }
}

</script>

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单Vue聊天室的示例代码,可以让您在发送消息时将其自动定位聊天室的底部: ``` <template> <div class="chat-room"> <div class="messages" ref="messages"> <div v-for="(message, index) in messages" :key="index" class="message"> <p>{{ message }}</p> </div> </div> <div class="input"> <input v-model="newMessage" @keyup.enter="sendMessage" placeholder="请输入消息..."> </div> </div> </template> <script> export default { data() { return { messages: [], newMessage: '' } }, methods: { sendMessage() { if (this.newMessage.trim()) { this.messages.push(this.newMessage) this.newMessage = '' this.$nextTick(() => { this.$refs.messages.scrollTop = this.$refs.messages.scrollHeight }) } } } } </script> <style> .chat-room { display: flex; flex-direction: column; height: 100%; } .messages { overflow-y: scroll; flex-grow: 1; } .message { padding: 10px; margin-bottom: 10px; background-color: #f0f0f0; border-radius: 5px; } .input { margin-top: 10px; } input { padding: 10px; border-radius: 5px; border: 1px solid #ccc; font-size: 16px; width: 100%; } </style> ``` 该示例包括一个messages数组,用于存储已发送的消息,并在用户发送新消息时将其添加到该数组中。 sendMessage() 方法用于将新消息添加到 messages 数组中,并在消息发送后将输入框清空。$nextTick() 方法用于等待Vue渲染完毕后将滚动条定位底部。 在模板中,我们使用v-for指令遍历messages数组,将每个消息渲染为一个带有类名“message”的div元素。 我们使用 $refs.messages 引用DOM元素,并在发送新消息后使用 $nextTick() 方法将其滚动到底部。 最后,使用 CSS 设置聊天室的外观和布局。 messages 类包含样式 overflow-y:scroll,以使消息列表可滚动,而 message 类包含一些简单的样式,例如填充、边距和背景颜色。 input 类包含样式以设置输入框的外观。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值