### [小程序组件:聊天会话组件的介绍(附代码)](https://www.prosaas.cn/article/17163)
**Published:** 2018-08-10T07:40:34
**Author:** 5201314
**Excerpt:** 本篇文章给大家带来的内容是关于小程序组件:聊天会话组件的介绍(附代码),有一定的参考价值,有需要的朋友可以参考…
本篇文章给大家带来的内容是关于小程序组件:聊天会话组件的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
**场景**
用于在线客服的聊天对话等
**一、布局圈点**
1、三角箭头
绘制一个26rpx\*26rpx矩形,使它旋转45度,然后隐去对半,形成气泡上的直角三角形。
/\* 三角箭头 \*/
.body .triangle {
background: white;
width: 20rpx;
height: 20rpx;
margin-top: 26rpx;
transform: rotate(45deg);
position: absolute;
}
2、flex-flow改变流动方向
分别取值\['row' | 'row-reverse'\],实现对方发来的消息头像居左,自己发的消息头像居右。
3、按住说话悬浮层水平与垂直居中
方案1,js手工计算
data: {
hud\_top: (wx.getSystemInfoSync().windowHeight - 150) / 2,
hud\_left: (wx.getSystemInfoSync().windowWidth - 150) / 2,
}
方案2,纯css
/\*悬浮提示框\*/
.hud-container {
position: fixed;
width: 150px;
height: 150px;
left: 50%;
top: 50%;
margin-left: -75px;
margin-top: -75px;
}
经过对比,方案2要优于方案1
**JS圈点**
一、touch事件实现上滑取消语音输入
按下出现悬浮,上滑到超过一定位移出现取消提示,松手取消;上滑未超过,松手发送
touchStart: function (e) {
// 触摸开始
var startY = e.touches\[0\].clientY;
// 记录初始Y值
this.setData({
startY: startY,
status: this.data.state.pressed
});
},
touchMove: function (e) {
// 触摸移动
var movedY = e.touches\[0\].clientY;
var distance = this.data.startY - movedY;
// console.log(distance);
// 距离超过50,取消发送
this.setData({
status: distance > 50 ? this.data.state.cancel : this.data.state.pressed
});
},
touchEnd: function (e) {
// 触摸结束
var endY = e.changedTouches\[0\].clientY;
var distance = this.data.startY - endY;
// console.log(distance);
// 距离超过50,取消发送
this.setData({
cancel: distance > 50 ? true : false,
status: this.data.state.normal
});
// 不论如何,都结束录音
this.stop();
},
二、发送消息完毕滚到页尾
data: {
toView: ''
}
reply: {
// ...
this.scrollToBottom()
},
scrollToBottom: function () {
this.setData({
toView: 'row\_' + (this.data.message\_list.length - 1)
});
},
相关推荐:
小程序与后台进行交互的实现(附代码)
小程序实现自动加载的完整代码
以上就是小程序组件:聊天会话组件的介绍(附代码)的详细内容,更多请关注知企PROSAAS其它相关文章!
**Tags:** css, flex, JS, 事件
**Categories:** 后端开发
---