当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 微信小程序开发之好友列表字母列表跳转对应位置

微信小程序开发之好友列表字母列表跳转对应位置

2017年12月12日  | 移动技术网IT编程  | 我要评论

微信小程序开发之好友列表字母列表跳转对应位置

前言:

在小程序里实现微信好友列表点击右侧字母列表跳转对应位置效果。写了个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-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

//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

/**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: 10rpx 10rpx;
 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;

如有疑问请留言或者到本站社区交流讨论,本站关于微信小程序的文章还有很多,希望大家搜索查阅,感谢阅读,希望能帮助到大家谢谢大家对本站的支持!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网