vue中动态添加数据时控制滚动条在底部_Vue实现渲染数据后控制滚动条位置(推荐)...

需求场景如下:

实现了消息发送,如果容器内消息过多,会出现滚动条,最新的消息位于最底部,不能及时出现在可视区域内,此时就需要在渲染列表后,将滚动条的位置定位到最底部。先来看看最终实现的效果

bd200d7e9be6109dc4efc84d8e2e2147.png

实现思路渲染完数据后,通过refs对象获取消息容器的实际高度 将滚动条的设置到最底部

实现过程

sendMessage: function (event) {

// 数据渲染

this.senderMessageList.push(thisSenderMessageObj);

// 改变滚动条位置

this.messagesContainerTimer = setTimeout(()=>{

this.$refs.messagesContainer.scrollTop = this.$refs.messagesContainer.scrollHeight;

console.log("当前滚动条位置:"+this.$refs.messagesContainer.scrollTop);

console.log("当前可滚动区域容器的高度:"+this.$refs.messagesContainer.scrollHeight);

// 清理定时器

clearTimeout(this.messagesContainerTimer);

},0);

<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Vue的计算属性和数组的slice方法来实现数据滚动和删除。 首先,在data定义一个数组来存储数据,例如: ``` data: { dataList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } ``` 然后,在template使用v-for指令来循环渲染数据,并使用计算属性来控制显示的数据数量,例如: ``` <template> <div> <ul> <li v-for="item in displayList">{{ item }}</li> </ul> </div> </template> <script> export default { data() { return { dataList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } }, computed: { displayList() { return this.dataList.slice(0, 10) // 控制显示的数据数量为10条 } } } </script> ``` 接下来,可以使用定器来实现数据滚动和删除。在mounted钩子函数定义一个定器,每隔一定间就将数组的第一个元素删除,并将一个新的元素添加到数组的末尾,例如: ``` mounted() { setInterval(() => { this.dataList.shift() // 删除第一个元素 this.dataList.push(Math.random() * 100) // 添加一个新的元素 }, 1000) // 每隔1秒执行一次 } ``` 这样就可以实现数据滚动和删除了。完整代码如下: ``` <template> <div> <ul> <li v-for="item in displayList">{{ item }}</li> </ul> </div> </template> <script> export default { data() { return { dataList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } }, computed: { displayList() { return this.dataList.slice(0, 10) // 控制显示的数据数量为10条 } }, mounted() { setInterval(() => { this.dataList.shift() // 删除第一个元素 this.dataList.push(Math.random() * 100) // 添加一个新的元素 }, 1000) // 每隔1秒执行一次 } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值