使用scroll-top使聊天对话滚动到底部

scroll-view需要设置高度

输入内容后,必然要在对话界面的底部显示内容,但是在uni-app下不知道如何能操作DOM来显示和定位,有说需要通过uni.pageScrollTo的方式,但是这个页面刷新的太厉害,输入框都刷新了,没法使用。所以只能使用scroll-view组件。但是通过scroll-view使用竖向滚动时,需要给 <scroll-view> 一个固定高度。为了适配屏幕的大小,则需要通过计算来确定scroll-view的高度。

<scroll-view id="scrollview" class="chat-window" scroll-y="true" :style="{height: style.contentViewHeight + 'px'}" :scroll-with-animation="true" :scroll-top="scrollTop"><block v-for="chat in chatList"><online-chat-control :chatItem="chat"></online-chat-control></block></scroll-view>

js代码

data() {return {// 聊天页面时时滚动样式style: {pageHeight: 0,contentViewHeight: 0,footViewHeight: 90,mitemHeight: 0,},scrollTop : 0}
},
created() {const res = uni.getSystemInfoSync(); //获取手机可使用窗口高度     api为获取系统信息同步接口this.style.pageHeight = res.windowHeight;this.style.contentViewHeight = res.windowHeight - uni.getSystemInfoSync().screenWidth / 750 * (300); //像素   因为给出的是像素高度 然后我们用的是upx  所以换算一下 },
onLoad() {this.scrollToBottom(); //创建后调用回到底部方法
}

发送消息时调用

/**
* @information 跳转页面底部
*/
scrollToBottom() {let that = this;let query = uni.createSelectorQuery();query.selectAll('.cu-chat').boundingClientRect();query.select('#scrollview').boundingClientRect();query.exec((res) => {hat.style.mitemHeight = 0;res[0].forEach((rect) => that.style.mitemHeight = that.style.mitemHeight + rect.height + 40) //获取所有内部子元素的高度// 因为vue的虚拟DOM 每次生成的新消息都是之前的,所以采用异步setTimeout    主要就是添加了这定时器setTimeout(() => {if (that.style.mitemHeight > (that.style.contentViewHeight - 100)) { //判断子元素高度是否大于显示高度that.scrollTop = that.style.mitemHeight - that.style.contentViewHeight //用子元素的高度减去显示的高度就获益获得序言滚动的高度}}, 100)})
},

uniapp聊天对话滚动到底部相关推荐

  1. uni-app 聊天对话滚动到最底部

    uni-app 之 聊天室滚到最底部 请注意 !:  知识点为uni-app 与 vue 结合 这次写到聊天室,碰到一个emmmmm问题比较严重的事情,聊天嘛,咱们想实现的就无非是微信,QQ那种聊天的 ...

  2. uniapp聊天框滚动到底部(简单高效)

    需要注意修改class .cu-chat 为你的页面聊天框外层class,需要在控制台审查元素有高度. 代码: this.$nextTick(function() {                  ...

  3. uniapp微信小程序仿聊天 输入框在软键盘隐藏显示时与底部距离,以及保证聊天消息滚动到底部 的问题以及解决办法

    (本文最后边有完整代码,想先看效果的,可以直接粘贴不会报错) 一.先说输入框 1.输入框和键盘紧贴着,也就是计算 输入框在键盘隐藏显示时 距离底部的距离,我让输入框外边的盒子固定定位,给bottom一 ...

  4. vue 聊天框滚动到底部

    容器 <div class="scroll"><div ref="toBottom" @click="toBottom()" ...

  5. [uni-app]聊天App实例

    项目简介 基于uni-app+vue+vuex+uniPop+swiper等技术开发的仿微信聊天室uniapp-chatroom项目,类似vue及小程序api语法使开发更加方便,实现了发送图文消息.表 ...

  6. vue整合uniapp_uni-app仿微信App界面|vue+uniapp聊天室|仿微信朋友圈

    项目简介 基于uni-app+vue+vuex+uniPop+swiper等技术开发的仿微信聊天室uniapp-chatroom项目,类似vue及小程序api语法使开发更加方便,实现了发送图文消息.表 ...

  7. uniapp 即时通讯_uni-App 仿微信 App 即时通讯|vue+uniapp 聊天

    项目介绍 基于uni-app+vue+vuex+uniPop+swiper等技术开发仿微信App聊天室实战项目,实现了发送消息.表情(gif动图),图片预览.地图位置.红包.仿微信朋友圈等功能. 项目 ...

  8. 小程序聊天对话,每次都显示最新消息(让页面自动滚动到底部)

    //页面自动滚动到底部pageScrollToBottom:function(){wx.createSelectorQuery().select('#scrollpage').boundingClie ...

  9. uniapp实现滚动到底部加载更多数据

    如果数据量非常大的话,数据批量加载是一种优化手段,那么,如何实现? onReachBottom uniapp的生命周期onReachBottom 页面滚动到底部的事件(不是scroll-view滚到底 ...

最新文章

  1. iis+php解析漏洞修复,IIS7.0畸形解析漏洞通杀0day
  2. SQL Server温故系列(1):SQL 数据操作 CRUD 之增删改合
  3. 使用Mapping实现的以太坊智能合约的代码
  4. 产品经理如何专业吐槽产品?友谊小船从此不再翻
  5. 笔记-项目风险管理-风险应对
  6. wxWidgets:滚动窗口
  7. c#中tcp协议服务器同时接收客户端的数据
  8. 关系数据库的几种设计范式介绍
  9. linux netlink 内核配置,如何在linux内核模块中加入netlink通信接口
  10. 同步方案java_【Java基础】多线程中同步的两种解决方案
  11. 党建活动献爱心,达飞云贷冬日送温暖
  12. bwlabel函数和regionprops函数用法详解
  13. 中国顶级富豪沉浮录:财富常青树之谜与大败局规律
  14. 视频无损压缩转码免费软件 HandBrake【无损视频画质压缩】
  15. 世界上最具价值的10家公司!
  16. 公网远程访问连接Minecraft我的世界服务器 - MCSM控制面板
  17. 《Effective C++》第三版 第六章 继承与面向对象设计 32~35条例
  18. 前端常说的优化之图片优化
  19. 弹幕插件easyDanmaku.js使用详解
  20. 修改计算机桌面壁纸影响计算机考试吗,若何修改调换计算机桌面背景图片

热门文章

  1. python用matplotlib画球_Python 用matplotlib画以时间日期为x轴的图像
  2. oracle 取农历函数,获取阴历(农历)和当前日期的js代码_javascript技巧
  3. 机房租赁,如何鱼和熊掌兼得?
  4. 20160411_使用老毛桃破解电脑密码
  5. 移动端SEO之用户体验优化提升方法
  6. 手机与windows大文件高速传输方法 自用
  7. ​力扣解法汇总764. 最大加号标志
  8. 【数据结构】插入排序(直接插入排序 希尔排序)
  9. Matlab演奏天空之城
  10. win7 nvme 支持补丁_国产桌面版OS系统发布:Win7般体验 最高安全认证