wepy-wechat-demo icon indicating copy to clipboard operation
wepy-wechat-demo copied to clipboard

聊天界面如何实现始终保持滚动条在底部

Open kiner-tang opened this issue 8 years ago • 11 comments

在实时聊天的时候,我们一般都希望最新的消息在我们可视区域的最底部,那么在小程序中如果需要实现这样的功能该怎么做呢?我运行了一下demo,貌似是没有实现此功能的。 image 上图最后一条消息后面还有一条最新消息被遮挡住了

kiner-tang avatar Feb 02 '17 03:02 kiner-tang

同问

hfhimage avatar Apr 28 '17 15:04 hfhimage

https://mp.weixin.qq.com/debug/wxadoc/dev/component/scroll-view.html

理论上应该可以通过计算 scroll-top 属性实现滚动到底部,但是我没有试验过。

Gcaufy avatar May 02 '17 03:05 Gcaufy

嗯,关键是没找到计算的方法....我给 scroll-top 设置了一个比较大的值,勉强可以,但达不到小程序 “荔枝FM播客” 的效果,不知道他们怎么实现的

hfhimage avatar May 03 '17 02:05 hfhimage

发消息会计算消息列表高度,动态设计scroll-top

Gcaufy avatar May 03 '17 02:05 Gcaufy

这个属性应该也可以。

scroll-into-view	String		值应为某子元素id(id不能以数字开头),则滚动到该元素,元素顶部对齐滚动区域顶部,只支持纵向滚动

Gcaufy avatar May 03 '17 02:05 Gcaufy

从1.4.0开始,小程序提供了下面的api,可以获取到WXML的信息,包括节点高度: https://mp.weixin.qq.com/debug/wxadoc/dev/api/wxml-nodes-info.html#nodesreffieldsfieldscallback

renyufu avatar Aug 17 '17 05:08 renyufu

这个厉害,我试试

hfhimage avatar Aug 17 '17 09:08 hfhimage

let query = wx.createSelectorQuery();
    query.select('#chatScrollView');
    query.selectAll('.chat-item').boundingClientRect(function (rects) {
        _this.setData({
          chatTop: _this.data.chatTop+rects.pop().height
        });
    }).exec();

swit1983 avatar May 24 '18 10:05 swit1983

怎么实现的啊??

EasonShen1989 avatar Jul 12 '18 08:07 EasonShen1989

聊天页面第一次进入页面 好想获取不到高度??只要点击进去一次 之后都可以自定滚动

LIZHIBIN513 avatar Jul 13 '18 10:07 LIZHIBIN513

利用scroll-view的scroll-into-view属性

动态给每个消息设置一个id,然后让scroll-into-view指向最新的消息id即可。

demo如下:

scroll-into-view属性值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素

<scroll-view scroll-y="true" scroll-into-view="msg{{msgs.length-1}}" scroll-with-animation="{{true}}">
    <view class="chat-msgs">
        <view class="msg-item" id="msg{{index}}" wx:for="{{msgs}}" wx:key="{{index}}">
            <view class="msg-item-con">
                {{item.content}}
            </view>
        </view>
    </view>
</scroll-view>

a958330481 avatar Jan 26 '19 07:01 a958330481