微信小程序设置锚点定位,wx.pageScrollTo

微信小程序中使用 wx.pageScrollTo({)};进行页面锚点定位,一定要将根目录设置为滑动的根据。

也就是 page 要设置样式为 overflow-y: auto;指定他的高度。
在其中,设置一个容器 home 设置id。
在添加一个内容容器 container 设置类名。
设置多个锚点,添加锚点类型 如: node0, node1, node2 等。
然后通过点击事件传递要跳转的锚点信息。

通过wx.createSelectorQuery().select(类名).boundingClientRect(res => {}),, 获取锚点中的数据。
在通过wx.createSelectorQuery().select(“#home”).boundingClientRect(res => {}), 获取设置的根(整个滑动的元素)锚点home。
在这里不能直接获取跟元素 page ,只能获取当前组件的根元素,也就是home。
在通过wx.pageScrollTo({ selector: “.container”, scrollTop: 滑动的距离 });就可以滑动到锚点。

看不懂的看代码, (通过 vue3.0 + ts + vite 创建的uni-app 项目)

page {
	width: 100%;
    height: 100vh;
    display: block;
    overflow-y: auto;  /* 重点 */
    overflow-x: hidden;
    box-sizing: border-box;
}
<view id="home">
	<view class="container">
		<!-- 内容 锚点点击事件 -->
		<view v-for="(item, index) in data" :key="index" @click="jump(item, index)"></view>
		<!-- 锚点 -->
		<view class="node0"></view>
		<view class="node1"></view>
		<view class="node2"></view>
	</view>
</view>
let data = ["1","2","3","4"],

const jump = (row: any, index: number): void => {
	let className = String('.node' + index);
    uni.createSelectorQuery().select(className).boundingClientRect((con: any) => { // 获取点击要跳转的锚点信息
        uni.createSelectorQuery().select("#home").boundingClientRect((res: any) => { // 获取根元素要滑动的元素
            uni.pageScrollTo({
                selector: "#home",  // 滑动的元素
                // duration: 1500, //过渡时间
                scrollTop: con.top - res.top, //到达距离顶部的top值
            });
        }).exec();
    }).exec();
});

### 微信小程序 `wx.pageScrollTo` 使用方法 在微信小程序中,`wx.pageScrollTo` API 用于将页面滚动到指定位置。此功能对于实现点定位非常有用,能够提升用户体验。 #### 参数说明 该接口接受一个对象作为参数,其中包含两个主要属性: - **scrollTop**: 页面垂直方向滚动的目标位置(单位为px)。这是必填项。 - **duration**: 滚动动画的时间,默认值为300ms,可选填。如果设为0,则表示无动画效果立即完成滚动[^1]。 #### 实际应用案例 下面是一个简单的例子来展示如何使用这个API让页面平滑地滚回到顶部: ```javascript // pages/index.js Page({ scrollToTop: function () { wx.pageScrollTo({ scrollTop: 0, duration: 300 }) } }) ``` 对应的WXML文件里可以放置按钮触发上述行为: ```xml <!--pages/index.wxml--> <button bindtap="scrollToTop">返回顶部</button> ``` 当用户点击“返回顶部”的按钮时,就会调用`scrollToTop()`函数执行滚动动作[^4]。 为了使页面中的某个特定元素成为滚动目标而不是整个页面顶端,可以通过计算该元素相对于页面顶部的距离并将其赋给`scrollTop`属性来达成目的。这通常涉及到先通过JavaScript获取DOM节点的位置信息[^3]。 例如,在某些场景下可能希望页面加载完成后自动滚动至某一部分内容处显示,此时可以在页面初始化逻辑中加入相应的处理代码片段: ```javascript Page({ onLoad: function(options){ // 计算目标区域距离页面顶部的高度 const query = wx.createSelectorQuery(); let targetHeight; query.select('.target-element').boundingClientRect((rect)=>{ if (rect) { targetHeight = rect.top; setTimeout(() => { // 确保视图已经更新完毕再进行滚动操作 wx.pageScrollTo({ scrollTop: targetHeight, duration: 300 }); }, 0); } }).exec(); } }); ``` 这段脚本会在页面载入后查询名为`.target-element`的选择器所对应的实际渲染尺寸,并据此调整页面的滚动偏移量以聚焦于此部分[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值