当前位置: 首页 > news >正文

uni-app 聊天界面滚动到消息底部

目录

问题

组件

页面

使用的API

总结


问题

当你发一个消息,但是消息却需要你自己向下滑你才能看见,否则一直呗输入框挡住。

组件

scroll-view组件:一般使用scroll-view组件的都采取使用其scroll-into-view或者scroll-to属性。

scroll-top属性需要计算父容器和子容器的高度差,scroll-into-view我只能说非常难用,特别是ID这个限制,我在v-for中为每个聊天信息设置id,使用index最大的拼接出最底层消息的id,结果没有效果...

页面

<scroll-view scroll-y="true"  :scroll-top="scrollTop" id="scroll" class="scroll" @tap="Extend =false "> <view class="content" id="chatList"><view class="Chat"><view v-for="(item, index) in historyChat" :key="index"><chat :img_path="item.imgPath" :meg="item.message" :is_robot="item.robot" class="chats"></chat></view></view></view></scroll-view>

 chat是我自己封装的组件,没公布,写法可以参考我之前的文章http://t.csdnimg.cn/Di6Xo


 

使用的API

  • 主角:uni.pageScrollTo 

        这个API的描述是可以将页面滚动到目标位置(单位px)。可以指定滚动到具体的scrollTop数值,也可以指定滚动到某个元素的位置。

        注意:这个滚动的位置是从页面的顶部开始计算的

  • 配角:uni.createSelectorQuery():

这个方法返回一个SelectorQuery对象实例,其通过绑定id,返回一个 NodesRef 对象实例,可以用于获取节点信息。

idString节点的 ID
datasetObject节点的 dataset
leftNumber节点的左边界坐标
rightNumber节点的右边界坐标
topNumber节点的上边界坐标
bottomNumber节点的下边界坐标
widthNumber节点的宽度
heightNumber节点的高度

而 NodesRef 对象带有boundingClientRect方法可以获取某个节点信息。

总结

那么思路已经很清晰了,使用uni.pageScrollTo 让滚动到目标位置(scrollTop)设置为页面的高度不就可以了?

uni.createSelectorQuery()锁定scroll-view的id,使用 NodesRef 对象返回的只有height信息

// 滚动至聊天底部scrollToBottom: function(){const query = uni.createSelectorQuery();query.select('#scroll').boundingClientRect((rect) => {if (rect) {uni.pageScrollTo({scrollTop: rect.height,duration: 300 // 滚动动画持续时间,单位 ms});}});query.exec();},


http://www.mrgr.cn/news/29215.html

相关文章:

  • 大模型微调基本概念指北,零基础入门到精通,收藏这一篇就够了
  • Maven的详细解读和配置
  • 优化内容个性化:无限住宅代理如何做到的
  • 基于51单片机的锅炉控制系统PID调节proteus仿真
  • 架构师:生成唯一标识的技术指南
  • 腾讯百度阿里华为常见算法面试题TOP100(5):子串、堆
  • python 实现费马检测算法
  • 深入解析 Apache Kylin
  • 【JAVA】多线程的创建、线程池创建线程的方式(超详细)
  • 基于LangChain的Embedding开发手册(保姆级)
  • 【C/C++】涉及string类的经典OJ编程题
  • 深入理解JNDI注入—RMI/LDAP攻击
  • 变电站缺陷隐患检测图像数据集,总共包含8000张图片,包含渗漏油,鸟巢,表盘破损,呼吸器变色等
  • MySQL-DDL/DML(数据定义/操作语言)
  • 【乐企-业务篇】开票前置校验服务-规则链服务接口实现(纳税人基本信息)
  • 是时候对企业数字化转型进行一次复盘了
  • Java中的服务端点异常处理:全局异常处理器
  • 责任链模式详解:实现请求处理的灵活解耦
  • 独孤思维:踩中红利,你也赚不到钱
  • 11111