小程序中实现页面自动滚动到最新回复的内容

项目场景:

最近学习小程序遇到了一个场景,需要实现页面自动滚动到最新回复的内容,看了微信开发文档,发现有个scroll-view属性,可以实现
但是由于习惯dom操作,想尝试使用类似dom操作的方法来实现


解决方法

在微信小程序中,你可以使用 wx.createSelectorQuery 方法来获取元素的信息,然后使用 wx.pageScrollTo 方法来滚动页面。
首先,你需要给每个消息元素一个唯一的 id,你可以使用数组的索引作为 id。修改你的 WXML 文件如下:

<view wx:for="{{messages}}" wx:key="*this" id="message-{{index}}">
  <view class="bubble bubble-left" wx:if="{{item.type === 'response'}}">{{item.text}}</view>
  <view class="bubble bubble-right" wx:if="{{item.type === 'request'}}">{{item.text}}</view>
</view

js代码

wx.request({
  // 其他的代码...
  success: (res) => {
    var newMessages = this.data.messages;
    newMessages.push({text: res.data.data.result, type: 'response'});
    this.setData({
      messages: newMessages
    }, () => {
      // 在 setData 的回调函数中滚动到最新的消息
      var query = wx.createSelectorQuery();
      query.select('#message-' + (newMessages.length - 1)).boundingClientRect();
      query.selectViewport().scrollOffset();
      query.exec((res) => {
        wx.pageScrollTo({
          scrollTop: res[0].bottom + res[1].scrollTop,
          duration: 300
        });
      });
    });
  }
});

在这个修改后的代码中,每次添加新的消息后,我们都会滚动到最新的消息。我们使用 wx.createSelectorQuery 来获取最新消息元素的位置,然后使用 wx.pageScrollTo 来滚动到这个位置。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在微信小程序,可以使用 `scroll-view` 组件来实现页面滚动。具体实现方法如下: 1. 在 wxml 文件添加 `scroll-view` 组件,并设置其高度和滚动方向: ```html <scroll-view class="scroll-view" scroll-y="true" style="height: 100vh;"> <!-- 在这里添加需要滚动页面内容 --> </scroll-view> ``` 2. 在 wxss 文件设置 `scroll-view` 组件的样式: ```css .scroll-view { /* 设置滚动条的样式 */ scrollbar-color: #999 #f5f5f5; scrollbar-width: thin; } ``` 其,`scrollbar-color` 和 `scrollbar-width` 分别用于设置滚动条的颜色和宽度。 3. 可以在 `scroll-view` 组件添加需要滚动页面内容,例如: ```html <scroll-view class="scroll-view" scroll-y="true" style="height: 100vh;"> <view class="content"> <text>这是一段需要滚动的文本。</text> <image src="/images/example.jpg"></image> <text>这是另一段需要滚动的文本。</text> <!-- 在这里可以继续添加需要滚动内容 --> </view> </scroll-view> ``` 上述代码,`content` 类用于设置页面内容的样式。 4. 可以在 `scroll-view` 组件上绑定滚动事件,例如: ```html <scroll-view class="scroll-view" scroll-y="true" style="height: 100vh;" bindscroll="onScroll"> <!-- 在这里添加需要滚动页面内容 --> </scroll-view> ``` 在 js 文件,可以定义 `onScroll` 方法来处理滚动事件: ```javascript Page({ onScroll: function(event) { // 处理滚动事件 } }) ``` 通过以上步骤,就可以在微信小程序实现页面滚动了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值