微信小程序 | 页面自动滚动到指定位置

我们有时会需要让页面自动滚动到某个位置(比如点击顶部的目录,滚动到下面对应内容的位置),那么在小程序中我们应该怎么做呢?

做法

1.使用 wx.createSelectorQuery().select().boundingClientRect()查询到需要滚动到的元素位置

2.使用 wx.pageScrollTo()将页面滚动到对应位置


scrollTo() {
    // 1.使用wx.createSelectorQuery()查询到需要滚动到的元素位置
    wx.createSelectorQuery().select('.bb4').boundingClientRect(res => {
      // 到这里,我们可以从res中读到class为bb4的top,即离顶部的距离(px)
      // 2使用wx.pageScrollTo()将页面滚动到对应位置
      wx.pageScrollTo({
        scrollTop: res.top, // 滚动到的位置(距离顶部 px)
        duration: 0 //滚动所需时间 如果不需要滚动过渡动画,设为0(ms)
      })
    }).exec()
}

var tity = wx.createSelectorQuery();

返回一个 SelectorQuery 对象实例。在自定义组件或包含自定义组件的页面中,应使用 this.createSelectorQuery() 来代替。

SelectorQuery.selectViewport() 获取界面上的节点信息

可用于获取显示区域的尺寸、滚动位置等信息。

selectAll('.title ').boundingClientRect();

boundingClientRect(function callback)

添加节点的布局位置的查询请求。相对于显示区域,以像素为单位。其功能类似于 DOM 的 getBoundingClientRect。返回 NodesRef 对应的 SelectorQuery

tity.exec(function (res) { //执行请求
      wx.pageScrollTo({
        scrollTop: res[0].scrollTop + res[1][0].top,
      })

SelectorQuery.exec(function callback)

执行所有的请求。请求结果按请求次序构成数组,在 callback 的第一个参数中返回。

//用户点击tab时调用
  titleClick: function (e) {
    // var that = this;
    var tity = wx.createSelectorQuery();
    tity.selectViewport().scrollOffset();
    tity.selectAll('.title ').boundingClientRect();
    tity.exec(function (res) { //执行请求
      wx.pageScrollTo({
        scrollTop: res[0].scrollTop + res[1][0].top,
      })

    })
扩展一下下

上面的方法搞定之后试一下我们就知道,那是把目标位置滚动到页面顶端的。那么如果我们想要目标位置在屏幕中间呢?其实就是在上面拿到元素距离顶部的距离的基础上减去页面的高度的一半。

scrollTo() {
	// 1.使用wx.createSelectorQuery()查询到需要滚动到的元素位置
	wx.createSelectorQuery().select('.bb4').boundingClientRect(res => {
         // 2.使用wx.getSysTemInfo()获取设备及页面高度windowHeight(px)
            wx.getSystemInfo({
                success(ress) {
                  wx.pageScrollTo({
                  	// 3. 滚动的距离根据设备的页面高度进行微调(px)
                    scrollTop: res.top - ress.windowHeight/2 + 50,
                    duration: 200
                  })
                }
          })
        }).exec()
}

转载地址: https://blog.csdn.net/Gqiangqiang/article/details/111768338?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166911252516800215069509%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166911252516800215069509&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-111768338-null-null.142v66control,201v3control_1,213v2t3_esquery_v2&utm_term=%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%20%7C%20%E9%A1%B5%E9%9D%A2%E8%87%AA%E5%8A%A8%E6%BB%9A%E5%8A%A8%E5%88%B0%E6%8C%87%E5%AE%9A%E4%BD%8D%E7%BD%AE&spm=1018.2226.3001.4187

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 微信小程序中点击按钮跳转页面可以使用 `wx.navigateTo` 或 `wx.redirectTo` 方法。 首先,在按钮的绑定事件中调用方法,如: ``` <button bindtap='jumpPage'>跳转页面</button> ``` 然后,在页面的 js 文件中实现跳转逻辑,如: ``` Page({ jumpPage: function() { wx.navigateTo({ url: '/pages/newpage/newpage' }) } }) ``` 注意,需要在项目的 `app.json` 文件中注册新页面,才能在小程序中使用。 使用 `wx.navigateTo` 方法会在当前页面下方加载新页面,而使用 `wx.redirectTo` 方法会替换当前页面,也就是关闭当前页面,并打开新页面。 希望这些信息能帮到你! ### 回答2: 要在微信小程序中实现点击按钮跳转页面,首先需要在小程序的页面中添加一个按钮组件,并设置按钮的事件绑定。在按钮的事件处理函数中,可以通过调用微信小程序的导航API实现页面的跳转。 具体步骤如下: 1. 在小程序的页面中,添加一个按钮组件: ``` <button bindtap="redirectToPage">点击跳转</button> ``` 2. 在小程序页面的js文件中,定义按钮的点击事件处理函数: ``` Page({ redirectToPage: function() { wx.navigateTo({ url: '跳转的页面路径' }) } }) ``` 其中,`wx.navigateTo`是微信小程序的导航API,可以跳转到应用的某个页面。在`url`参数中,填入跳转页面的路径,如`'pages/other/other'`。跳转的页面路径需要在小程序的配置文件`app.json`中进行配置。 3. 在小程序的配置文件`app.json`中,为跳转的页面路径进行配置: ``` { "pages": [ "pages/index/index", "pages/other/other" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "微信小程序", "navigationBarTextStyle":"black" } } ``` 在`pages`数组中,添加需要跳转的页面路径,以使跳转路径有效。 通过以上步骤,就可以在微信小程序中实现点击按钮跳转页面的功能了。 ### 回答3: 要实现在微信小程序中点击按钮跳转页面,可以按照以下步骤进行操作: 1. 在当前页面的.wxml文件中,定义一个按钮,并设置相应的样式和事件绑定,例如: ``` <button bindtap="navigateToPage">跳转到新页面</button> ``` 2. 在当前页面的.js文件中,编写相应的事件处理函数,例如: ``` Page({ navigateToPage: function() { wx.navigateTo({ url: '/pages/newPage/newPage' }) } }) ``` 3. 在app.json文件中配置新页面的路径和窗口样式,例如: ``` { "pages": [ "pages/index/index", "pages/newPage/newPage" ], "window": { "backgroundColor": "#ffffff", "navigationBarTitleText": "微信小程序" } } ``` 4. 在新页面的.wxml文件中,定义相应的内容和样式。 以上就是在微信小程序中实现点击按钮跳转页面的基本步骤。需要注意的是,页面间的跳转可以使用`wx.navigateTo`方法跳转到新页面,也可以使用`wx.redirectTo`方法进行页面重定向,具体使用哪种方法根据需求来决定。同时,还可以使用`wx.navigateBack`方法返回上一页,或者使用`wx.switchTab`方法切换到指定的tab页。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值