摘要:
这是一篇关于小程序聊天系统的制作
- 聊天界面如何布局
- 聊天界面如何跑通逻辑
小程序聊天系统的制作:
先上效果图
编辑之后的效果
好的,开始上代码
首先呢进行页面布局,这是部分聊天框的代码,这部分我放在了
1 | <view class="time">2018-02-16 13:08</view> |
这里有一个要注意的地方和一个难点:
聊天框得自适应对不对,不能给他固定一个width,因此呢我给了他一个最大宽度 max-width,那么他在超过最大宽度时候就可以换行。
难点呢在于聊天框的箭头指向,就这个小小的三角形。我绞尽脑汁啊想到了一个办法。我发现如果不给div设置宽度和高度,只给他设置边框的话,那么这个边框就由四个小三角形组成。于是就有了下边的代码
1 | .send { |
这里呢,父元素就是聊天框,子元素就是指向的箭头,聊天框相对定位,箭头绝对定位,将他的位置固定再聊天框边边那块地方。然后箭头的大小啊,位置啊,通过top、border-top等这几个元素慢慢调吧。这里我还给他设置了一个角度transform: rotate(-28deg);
那么到这里,界面构建的应该都没太大问题了吧?然后开始写一写逻辑部分。
首先呢既然是聊天系统,你发送的话信息得出去吧。那么这里的逻辑是这样的:
HTML部分
1 | <scroll-view scroll-y='true' scroll-top="{{scrollTop}}" class="content"> |
CSS部分
1 | bindSend: function(e) { |
我用了 bindconfirm=”bindSend” 绑定键盘的完成按钮,当你放松时执行 bindSend,bindSend 的作用很简单,就是储存这一次的消息,并且 添加到消息的这个数组中的最后一位(这里还加了一个参数 receive,为了判断是我发送的还是我接收的)。
这里还有个稍难点
就是每次发送完毕之后,页面应该是要滚动到最底部,才能看到最新的消息对不对,不然不符合用户体验。于是乎我用了这个方法:
1 | sendMessage: function () { |
代码很简单,我定义了一个值scrollTop,就是设置设置竖向滚动条位置,参考文档在这里,然后在scroll-view这个组建上的scroll-top属性绑定这个值就好了。
附送两个小技巧
点击发送之后键盘不收起
1 | <input confirm-type="send" bindconfirm="bindSend" confirm-hold="true"/> |
页面滚动到最底部时有个过度效果
1 | <scroll-view scroll-y='true' scroll-with-animation="true"> |
好了,由于目前还没有对接后台,所以微信小程序聊天系统的讲解就先到这里了,对接后小程序的WebSocket方法我估计也会写一篇文章,在此多谢大家的观看了