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

目录

问题

组件

页面

使用的API

总结


问题

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

组件

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

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

页面

javascript 复制代码
<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 对象实例,可以用于获取节点信息。

|---------|--------|-------------|
| id | String | 节点的 ID |
| dataset | Object | 节点的 dataset |
| left | Number | 节点的左边界坐标 |
| right | Number | 节点的右边界坐标 |
| top | Number | 节点的上边界坐标 |
| bottom | Number | 节点的下边界坐标 |
| width | Number | 节点的宽度 |
| height | Number | 节点的高度 |

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

总结

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

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

相关推荐
matlab_xiaowang1 小时前
Redux 入门:JavaScript 可预测状态管理库
开发语言·javascript·其他·ecmascript
前端摸鱼匠3 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker3 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
Linsk5 小时前
Java和JavaScript的关系真是雷峰和雷峰塔的关系吗?
java·javascript·oracle
当时只道寻常5 小时前
浏览器文本复制到剪贴板:企业级最佳实践
javascript
Alice-YUE6 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
是上好佳佳佳呀7 小时前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
莎士比亚的文学花园7 小时前
Linux驱动开发(3)——设备树
开发语言·javascript·ecmascript
01漫游者8 小时前
JavaScript函数与对象增强知识
开发语言·javascript·ecmascript
threelab10 小时前
Three.js 代码云效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能