小程序实现锚点定位
在小程序中要实现锚点定位,需要使用到组件 scroll-view
需要用到的是 scroll-into-view
这条属性,这条属性的官网解释是这样的:
scroll-into-view String
值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素
于是乎,我们只需要给 scroll-view
内要跳转的 view
设置上 id
,然后给 scroll-into-view
传入要跳转的 view
的 id
就行了
*注意:赋值时不能用等号 =
赋值,要使用 this.setData() 赋值,否则重复赋相同的值时不会跳转
点我查看微信小程序代码片段 wechatide://minicode/4OI2oNmQ722U
以下是源码(和代码片段的一样)
wxml
<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}}" class="list_item" > {{item}} </view> </scroll-view>
wxs
Page({ data: { }, onLoad: function () { }, jumpTo: function (e) { // 获取标签元素上自定义的 data-opt 属性的值 let target = e.currentTarget.dataset.opt; this.setData({ toView: target }) } })
wxss
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; }