微信小程序开发之好友列表字母列表跳转对应位置
微信小程序开发之好友列表字母列表跳转对应位置
前言:
在小程序里实现微信好友列表点击右侧字母列表跳转对应位置效果。写了个demo,核心部分很简单,所以没多少注释,如果遇到问题就加群问我吧。
核心技术点:
1、小程序scroll-view组件的scroll-into-view,scroll-with-animation.scroll-y属性。
2、小程序的touch事件的应用。
3、Js定时器的应用。
view页面代码:
index.wxml
class="container"scroll-y>
class="info"id="info"scroll-with-animationscroll-yscroll-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
//index.js
//获取应用实例
constapp=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;
varletter_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'];
varinfo_list=[];
for(vari=0;i<26;i++){
varobj={};
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;
}
varmoveY=e.changedTouches["0"].clientY-18,that=this;
varcurIndex=parseInt(moveY/18);
varview=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){
varmoveY=e.changedTouches["0"].clientY-18;
varcurIndex=parseInt(moveY/18);
varview=this.data.letter_list[curIndex];
this.setData({
curView:view
})
},
down:function(e){
if(this.timer){
clearTimeout(this.timer);
this.timer=null;
}
varindex=e.currentTarget.dataset.index,
that=this;
if(index!=999){
varview=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
/**index.wxss**/
text{
font-weight:bold
}
.letter{
font-size:12px;
width:24px;
height:100%;
position:fixed;
right:0;
top:0;
z-index:+999;
}
.litem{
width:24px;
height:18px;
line-height:18px;
text-align:center;
}
.info{
font-size:12px;
text-align:justify;
overflow:hidden;
}
.active{
background:rgba(0,0,0,0.2);
}
.iitem{
padding:10rpx10rpx;
margin-bottom:10rpx;
border-radius:8rpx;
background:rgba(222,222,222,0.2);
box-sizing:border-box;
}
.tips{
width:40px;
height:40px;
background:rgba(0,0,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;
如有疑问请留言或者到本站社区交流讨论,本站关于微信小程序的文章还有很多,希望大家搜索查阅,感谢阅读,希望能帮助到大家谢谢大家对本站的支持!