微信小程序开发之好友列表字母列表跳转对应位置
前言:
在小程序里实现微信好友列表点击右侧字母列表跳转对应位置效果。写了个demo,核心部分很简单,所以没多少注释,如果遇到问题就加群问我吧。
核心技术点:
1、小程序scroll-view组件的scroll-into-view, scroll-with-animation. scroll-y属性。 2、小程序的touch事件的应用。 3、Js定时器的应用。
index.wxml
class="info" id="info" scroll-with-animation scroll-y scroll-top="200" scroll-into-view="{{toView}}" style="height:{{height}}px;">
class="iitem" id="{{item.id}}" wx:for="{{info_list}}" wx:key="1">
{{item.id}} . {{item.desc}}
class="letter {{active == true ? 'active': ''}}" bindtouchstart='start' bindtouchmove='move' bindtouchend='end'>
class="litem" bindtap='down' data-index="999">☆
class="litem" wx:for="{{letter_list}}" bindtap='down' wx:for-index="index" wx:key="2" data-index="{{index}}" style="height: {{letter_height}}px;">{{item}}
class="tips" hidden="{{hide}}">{{curView}}
js代码:
index.js
获取应用实例
const app = getApp()
Page({
data: {
letter_list: [],info_list: [],hide: true,active: false,toView: 'A',curView: 'A',letter_height: 18
},onLoad: function () {
this.active = false;
this.timer = null;
var letter_list = ['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'];
var info_list = [];
for (var i = 0; i < 26; i++) {
var obj = {};
obj.id = letter_list;
obj.desc = '这是一个用于测试的DEMO。1.目标是用于实现微信好友列表的点击首字母跳转到对应好友位置。2.目标是用于实现微信好友列表的点击首字母跳转到对应好友位置';
info_list.push(obj);
}
this.setData({
height: app.globalData.height,info_list: info_list,letter_list: letter_list,sHeight: 100 * 26 + 25
});
},start: function (e) {
this.setData({
active: true,hide: false
})
},end: function (e) {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
var moveY = e.changedTouches["0"].clientY - 18,that = this;
var curIndex = parseInt(moveY / 18);
var view = this.data.letter_list[curIndex];
this.setData({
toView: view,active: false
});
if (!this.timer) {
this.timer = setTimeout(function () {
that.setData({
hide: true
})
that.timer = null;
},1000);
}
},move: function (e) {
var moveY = e.changedTouches["0"].clientY - 18;
var curIndex = parseInt(moveY / 18);
var view = this.data.letter_list[curIndex];
this.setData({
curView: view
})
},down: function (e) {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
var index = e.currentTarget.dataset.index,that = this;
if (index != 999) {
var view = this.data.letter_list[index];
this.setData({
toView: view,curView: view
})
} else {
this.setData({
toView: 'A',curView: '☆'
})
}
if (!this.timer) {
this.timer = setTimeout(function () {
that.setData({
hide: true
});
that.timer = null;
},1000);
}
}
})
样式部分
index.wxss
Box-sizing: border-Box;
}
.tips {
width: 40px;
height: 40px;
background: rgba(0,0.4);
font-size: 20px;
text-align: center;
line-height: 40px;
color: #fff;
position: fixed;
left: 50%;
top: 50%;
margin: -20px;
z-index: +999;
border-radius: 10rpx;
如有疑问请留言或者到本站社区交流讨论,本站关于微信小程序的文章还有很多,希望大家搜索查阅,感谢阅读,希望能帮助到大家谢谢大家对本站的支持!