uniapp聊天页面之消息滚动

目录

1、HTML部分

2、 Js部分

3、注意,滚动方法调用


1、HTML部分

用整个scroll-view的高度减去所有聊天内容的高度,得到的就是滚动条需要下拉的距离,即可使聊天页下拉至最底部。

需要给 scroll-view一个固定的高度,并获取消息信息的高度。

<view class="content"><scroll-view style="background-color: #f5f5f5;" class="chat-window" scroll-y="true" show-scrollbar="true":scroll-with-animation="true" :scroll-top="scrollTop" :style="{height: style.contentViewHeight + 'px'}"><view class="all" id='chatContent'><view class="word"><!-- 遍历获取到的消息 --><view v-for="(item ,index) in chatLog" class="cu-chat"><!-- 他人信息 --><view class="left-pal" v-show="item.from !== sendData.from"><up-image :src="userMap.get(item.from)" width="100rpx" height="100rpx" shape="circle"@click="skipDetails"></up-image><view class="container"> {{item.content}}</view></view><!-- 自己发送信息 --><view class="right-own" v-show='item.from === sendData.from'><view class="oneself"><view class="container"> {{item.content}}</view><up-image :src="userMap.get(item.from)" width="100rpx" height="100rpx" shape="circle"@click="skipMy"></up-image></view></view></view></view></view></scroll-view><view class="base"><up-input placeholder="请输入内容" style="background-color: #fff;" border="surround"v-model="sendData.content"></up-input><u-button text="发送" type="success" class="button" @click="Send":disabled="sendData.content.length==0"></u-button></view></view>

2、 Js部分

	//定义盒子的初始高度const style = ref({contentViewHeight: 0,mitemHeight: 0})//contentViewHeight: 消息信息展示, mitemHeight: 消息总高度onLoad((option) => {const res = uni.getSystemInfoSync(); //获取手机可使用窗口高度 style.value.contentViewHeight = res.windowHeight - 60;// res.windowHeight:屏幕的高度减去,输入框的高度,得到信息的需要展示的高度})
/*** @information 跳转页面底部*/const scrollToBottom = () => {let query = uni.createSelectorQuery();query.selectAll('.cu-chat').boundingClientRect();//获取所有消息节点query.exec((res) => {style.value.mitemHeight = 0;res[0].forEach((rect) => style.value.mitemHeight = style.value.mitemHeight + rect.height + 40)//获取所有内部子元素的高度,遍历得到总高度/** 因为vue的虚拟DOM 每次生成的新消息都是之前的,所以采用异步setTimeout   * 主要就是添加了这定时器*/setTimeout(() => {if (style.value.mitemHeight > (style.value.contentViewHeight - 100)) {//判断子元素高度是否大于显示高度scrollTop.value = style.value.mitemHeight - style.value.contentViewHeight//用子元素的高度减去显示的高度就获益获得序言滚动的高度}}, 100)})}

3、注意,滚动方法调用

        刚进入页面的时候,有可能会没有滚动效果,这可能是因为消息列表的DOM节点还没有渲染到页面上,滚动的方法变已经执行了,导致滚动效果消失。所以调用的时候最好放在nextTick中。

nextTick(() => {scrollToBottom()})
//待全部DOM节点加载完后再滚动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java解决IP地址无效化

Java解决IP地址无效化 01 题目 给你一个有效的 IPv4 地址 address&#xff0c;返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址&#xff0c;其实就是用 "[.]" 代替了每个 "."。 示例 1&#xff1a; 输入&#xff1a;address "1.1.1.1" 输出…

算法-删除有序数组中的重复项

Q:给你一个有序数组nums &#xff0c;请你原地删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。不要使用额外的数组空间&#xff0c;你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。 第一种解决方法&a…

高质量的外贸开发信标题都是怎样的?

今天在网上看到很多不错的开发信标题&#xff0c;觉得不错&#xff0c;收藏起来分享给大家学习。 标题是吸引读者打开邮件的第一印象&#xff0c;对于外贸销售人员来说&#xff0c;精心撰写开发信标题至关重要。客户收到的邮件那么多&#xff0c;那么在客户收件箱中的5至20个客…

vue项目如何禁止屏幕缩放,vue项目进行浏览器进行缩放

第一步 找到 html 文件 &#xff0c;在head中添加一行属性代码 <meta name"viewport" content"widthdevice-width,initial-scale1.0 ,maximum-scale1.0, user-scalable0">第二步 找到 App.vue 文件 &#xff0c;在 script 模块中 添加下方代码 // …

几个市场主流伦敦银交易系统简介

很多人在伦敦银交易中都希望建立一个交易系统&#xff0c;依靠这个系统&#xff0c;我们在市场中能够建立稳定盈利的基础。下面我们就来简单地介绍几个市场主流的伦敦银交易系统。 均线交易系统。这是很多人使用的伦敦银交易系统&#xff0c;一般适用于趋势行情中。均线交易系统…

如何定期跟踪和评估OKR的进度

设定跟踪周期 根据公司的实际情况和需要&#xff0c;设定合适的OKR跟踪周期。这个周期可以是每周、每月或每季度&#xff0c;以便及时了解OKR的进展情况。 使用进度图表 利用进度图表来可视化OKR的完成情况。这可以帮助团队更直观地了解目标的进度和剩余任务量&#xff0c;以…

uniapp直接连接wifi(含有ios和安卓的注意事项)

前言 小程序中直接连接wifi-----微信小程序 代码 启动 //启动wifistartWifi() {return new Promise((resolve, reject) > {uni.startWifi({success: (res) > {console.log(启动wifi 成功, res)resolve(true)},fail: (err) > {console.error(启动wifi 失败, err)uni.s…

【机器学习】【决策树】分类树|回归树学习笔记总结

决策树算法概述 基本概念 决策树&#xff1a;从根节点开始一步步走到叶子节点&#xff0c;每一步都是决策过程 对于判断的先后顺序把控特别严格 一旦将判断顺序进行变化则最终的结果将可能发生改变 往往将分类效果较佳的判断条件放在前面&#xff0c;即先初略分在进行细节分…

linux开发板设置密码登录

1、设置终端界面登录 inittab ::sysinit:/etc/init.d/rcS #::respawn:-/bin/sh ttyAMA0::askfirst:/bin/login #::respawn:/sbin/getty -L ttyAMA0 115200 vt100 #::restart:/sbin/init2、登录名 passwd root:x:0:0:root:/:/bin/sh3、密码加密 shadow root:$6$ButLCrnulfU4g…

http cookie,tcp syncookie 和 tcp fastopen 杂谈

syncookie 和 fastopen 的应用场景不赘述。它们均使用了 cookie 机制&#xff0c;返回给 client&#xff0c;再由 client 带回来用作识别。 说到它们的具体实现时&#xff0c;只要涉及 “识别” 机制&#xff0c;很多人都默认该机制需要 “解码 cookie”&#xff0c;“以 key …

c 枚举与字符串对 的几个方法

c使用枚举与字符串对的几种方法&#xff0c;供参考。 一 enum name { Zero, One, Two } ; const char* name[] {"Zero", "One", "Two"};//遍历 int size sizeof(name)/ sizeof(name[0]); //或字符串数组后加个空指针。 const char** ptr ; …

中国联通云技术,有哪些产品

中国联通国际公司&#xff0c;作为中国联通集团对外拓展国际市场的重要窗口与平台&#xff0c;已在国际电信领域取得了显著成就&#xff0c;其产品线涵盖了从基础联接到云端服务的多个层面&#xff0c;旨在为全球用户提供一体化、端到端的高品质信息服务解决方案。 大联接产品…

Mybatis-Plus——06,CRUD查

CRUD查 一、普通查询1.1、通过id查询单个用户1.2、通过id查询多个用户1.3、条件查询 通过map封装 二、分页查询2.1、配置分页插件2.2、运行方法 三、通过wrapper条件构造器查询3.1、查询name不为空&#xff0c;email不为空&#xff0c;age大于18的用户3.2、查询nameJone的用户3…

2024普通商家如何通过短视频矩阵快速破圈?

一个账号发1条作品&#xff0c;每条作品1000曝光覆盖1000人 十个账号发10条作品&#xff0c;每条作品1000播放量覆盖100000人 一百个账号发100条作品&#xff0c;每条作品1000播放量覆盖10000000人...... 如果我们有300个、500个账号甚至更多呢&#xff1f;自然每天能够覆盖到…

哪款洗地机值得买?希亦、追觅、米博、美的谁才是行业标杆?

在家庭清洁中&#xff0c;最让我们苦恼的便是厨房垃圾了&#xff0c;油渍跟食物残渣&#xff0c;用扫把扫了后&#xff0c;要反反复复的湿拖五六次&#xff0c;期间不停的手洗拖把&#xff0c;这套流程下来&#xff0c;往往容易腰酸背痛&#xff0c;手指皱巴巴的&#xff0c;这…

[数据集][图像分类]黄瓜叶子病害分类数据集172张3类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;172 分类类别数&#xff1a;3 类别名称:["nitrogen_and_potassium_def…

SAP MM学习笔记43 - 特殊调达流程 - 支付计划

以前学习了特殊调达流程 受托品和外注&#xff0c;中断了一阵儿去复习了PP了&#xff0c;咱继续回来研究MM。 SAP MM学习笔记42 - 特殊调达流程 - 受托品&#xff08;寄售&#xff09;-CSDN博客 SAP MM学习笔记41 - 特殊调达流程 - 外注加工-CSDN博客 本章讲SAP 特殊调达流程…

Get了!原来朋友圈定时发布如此简单!

你是不是也有这样的烦恼&#xff1f;微信号太多&#xff0c;有时候会顾不上发朋友圈&#xff1f; 别担心&#xff01;微信管理系统来帮你解决这个问题&#xff0c;实现朋友圈定时发布&#xff01;让我们一起来看看如何利用微信管理系统的强大功能来提升我们的社交媒体效率吧。…

Interceptor拦截器+JWT令牌实现登陆验证

一、背景 与过滤器的作用类似&#xff0c;不过拦截器是spring中的组件&#xff0c;只能拦截进入spring的请求&#xff1b;过滤器则可以拦截所有从前端页面发送来的请求。 *拦截器和过滤器选一就可以实现登陆验证&#xff0c;过滤器的实现在以下这篇博客中&#xff0c;有需要可…

在Exchange中启用/禁用搜索索引

默认情况下&#xff0c;所有的新邮箱数据都是启用Exchange搜索&#xff0c;仅当多个邮箱迁移到该Exchange Server时&#xff0c;才禁用搜索索引。 获取数据库的Exchange搜索索引 使用Get-MailboxDatabase 来获取数据库的搜索索引 Get-MailboxDatabase | Select-Object Name,…