在小程序中要实现锚点定位,需要使用到组件 scroll-view
需要用到的是 scroll-into-view 这条属性,这条属性的官网解释是这样的:
scroll-into-view String
值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素
于是乎,我们只需要给 scroll-view 内要跳转的 view 设置上 id,然后给 scroll-into-view 传入要跳转的 view 的 id 就行了
*注意:赋值时不能用等号 = 赋值,要使用 this.setData() 赋值,否则重复赋相同的值时不会跳转
html
<view class="btn_jump">
<view class='btn_item' bindtap='jumpTo' data-opt="item0">ToItem0</view>
<view class='btn_item' bindtap='jumpTo' data-opt="item11">ToItem11</view>
<view class='btn_item' bindtap='jumpTo' data-opt="item29">ToItem29</view>
</view>
<scroll-view class="jump_list"
scroll-into-view="{{toView}}"
scroll-y="true"
scroll-with-animation="true" >
<view wx:for="{{30}}" wx:key="{{item}}"
id="item{{item}}" class="list_item" >
{{item}}
</view>
</scroll-view>
js
Page({
data: {
},
onLoad: function () {
},
jumpTo: function (e) {
// 获取标签元素上自定义的 data-opt 属性的值
let target = e.currentTarget.dataset.opt;
this.setData({
toView: target
})
}
})
css
page {
height: 100%;
}
.btn_jump {
position: fixed;
z-index: 9;
top: 30rpx;
right: 10rpx;
}
.btn_jump .btn_item {
border: 1rpx solid #aaa;
margin-bottom: 30rpx;
}
.jump_list {
position: relative;
height: 100%;
}
.list_item {
height: 80rpx;
}
.list_item:nth-of-type(even) {
background: #f8f8f8;
}
本文介绍了在微信小程序中如何利用 scroll-view 组件的 scroll-into-view 属性实现锚点定位。通过为 view 元素设置 id,并在 js 中使用 this.setData() 更新 scroll-into-view 的值,可以实现在指定方向上的平滑滚动效果。需要注意,id 不能以数字开头,且赋值时不能直接使用等号,而应使用 setData 方法。
1809

被折叠的 条评论
为什么被折叠?



