微信小程序点击按钮滚动到最底部/顶部

 wxml

<button bindtap="goBottom">发表评论</button>

js(滚动到底部)

//获取容器高度,使页面滚动到容器底部  #xxx就是view的id名
  goBottom(){
    wx.createSelectorQuery().select('#xxx').boundingClientRect(function(rect){
      console.log('rectheight',rect.height);
      /* 将页面移动到最底部(用xxx的height定位) */
      wx.pageScrollTo({
        scrollTop: rect.height
      })
    }).exec()
  }

js(滚动到顶部)

记得将wxml的bindtap="goBottom"改成bindtap="goTop"

goTop(){
    wx.createSelectorQuery().select('#xxx').boundingClientRect(function(rect){
      console.log('rectheight',rect.height);
      /* 将页面移动到最顶部(用xxx的height定位) */
      wx.pageScrollTo({
        scrollTop: rect.top
      })
    }).exec()
  }

下面是一个完整的示例代码,实现了点击小程序页面外侧或 `scroll-view` 组件外侧回到顶部的功能。 ``` <!-- page.wxml --> <scroll-view id="my-scroll-view" class="scroll-view"> <view class="content"> <!-- ... 页面内容 ... --> </view> </scroll-view> <view class="page" catchtouchmove="true" bindtap="scrollToTop"> <!-- ... --> </view> <!-- page.js --> Page({ data: { scrollTop: 0, scrollHeight: 0 }, onLoad() { const query = wx.createSelectorQuery() query.select('#my-scroll-view').boundingClientRect() query.exec(res => { this.setData({ scrollHeight: res[0].height }) }) }, onPageScroll(event) { this.setData({ scrollTop: event.scrollTop }) }, scrollToTop() { if (this.data.scrollTop > 0) { this.setData({ scrollTop: 0 }) } else { wx.pageScrollTo({ scrollTop: 0, duration: 300 }) } } }) <!-- page.wxss --> .page { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .scroll-view { height: 100%; } .content { height: 2000rpx; } #my-scroll-view { height: 100%; } .back-to-top { position: fixed; bottom: 20rpx; right: 20rpx; background-color: #888; color: #fff; padding: 10rpx; border-radius: 20rpx; z-index: 9999; } ``` 在这个示例中,我们首先在 `onLoad` 生命周期中使用 `createSelectorQuery` 方法获取 `scroll-view` 组件的高度,并将其保存到 `scrollHeight` 变量中,用来判断当前滚动位置是否已经超过了组件底部。 然后,在 `onPageScroll` 方法中,我们监听页面滚动事件,并将当前滚动位置保存到 `scrollTop` 变量中。 在 `scrollToTop` 方法中,我们首先判断当前滚动位置是否已经超过了 `scroll-view` 组件底部,如果是,则直接调用 `setData` 方法将 `scrollTop` 变量的值设置为 0,即回到页面顶部;否则,调用 `wx.pageScrollTo` 方法实现平滑滚动到页面顶部。 最后,在 `wxml` 中,我们添加了一个覆盖整个页面的 `<view>` 元素,设置其 `catchtouchmove` 属性为 `true`,阻止滚动事件冒泡到父元素。同时,在 `<view>` 元素中添加了一个点击事件,在事件处理函数中调用 `scrollToTop` 方法,实现点击页面外侧回到顶部的功能。 另外,我们还添加了一个样式类 `.back-to-top`,用来设置返回顶部按钮的样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值