1. 创建一个自定义组件目录,例如 components。
2. 在 components 目录下创建一个索引列表组件的文件,例如 index-list。
- components/index-list/index-list.wxml:
<scroll-view class="index-scroll" scroll-y="{{true}}" bindscrolltoupper="scrollToUpper" bindscroll="scrollHandler">
<view class="index-container">
<view class="index-item" wx:for="{{indexList}}" wx:key="index" data-index="{{index}}" bindtap="jumpToIndex">
{{item}}
</view>
</view>
<!-- 内容区域 -->
<view class="content">
<view class="content-item" wx:for="{{dataList}}" wx:key="index">
{{item}}
</view>
</view>
</scroll-view>
- components/index-list/index-list.js:
Component({
data: {
indexList: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
dataList: [
{ index: 'A', item: 'Apple' },
{ index: 'A', item: 'Avocado' },
{ index: 'B', item: 'Banana' },
{ index: 'C', item: 'Cherry' },
// 其他数据项...
],
currentIndex: 0,
},
methods: {
scrollToUpper: function () {
// 滚动到顶部时的逻辑
},
scrollHandler: function (e) {
// 滚动时的逻辑,根据滚动位置更新索引
// 具体逻辑可以根据实际情况进行调整
const scrollTop = e.detail.scrollTop;
const index = Math.floor(scrollTop / 20); // 每个索引项的高度为 20px
this.setData({
currentIndex: index,
});
},
jumpToIndex: function (e) {
// 点击索引项时的逻辑,滚动到相应位置
const index = e.currentTarget.dataset.index;
const query = wx.createSelectorQuery().in(this);
query.select(`#content-item-${index}`).boundingClientRect();
query.exec((res) => {
if (res && res[0]) {
const top = res[0].top;
this.setData({
currentIndex: index,
});
wx.pageScrollTo({
scrollTop: top,
duration: 300,
});
}
});
},
},
});
- components/index-list/index-list.wxss:
.index-scroll {
height: 100vh;
width: 100%;
display: flex;
}
.index-container {
width: 20px;
background-color: #f5f5f5;
position: fixed;
top: 0;
bottom: 0;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 20px;
}
.index-item {
height: 20px;
line-height: 20px;
text-align: center;
color: #333;
font-size: 12px;
margin-bottom: 2px;
cursor: pointer;
}
.content {
flex: 1;
padding: 20px;
}
.content-item {
height: 20px;
line-height: 20px;
margin-bottom: 10px;
}
3. 在需要使用索引列表组件的页面中引入该组件。
<index-list></index-list>
这是一个简单的索引列表组件的示例。在实际开发中,你可能需要根据项目需求对样式和逻辑进行更进一步的定制。在实际开发中,你也可以使用小程序 UI 组件库,这些库通常提供了丰富的索引列表组件,能够简化开发流程。
转载请注明出处:http://www.zyzy.cn/article/detail/1350/微信小程序