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


Posted in Javascript onSeptember 26, 2017

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

前言:

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

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

Javascript 相关文章推荐
node.js Web应用框架Express入门指南
May 28 Javascript
js中实现多态采用和继承类似的方法
Aug 22 Javascript
jQuery中not()方法用法实例
Jan 06 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
Aug 05 Javascript
javascript 中的事件委托详解
Oct 25 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
Dec 02 Javascript
Jquery树插件zTree实现菜单树
Jan 24 Javascript
如何使用angularJs
May 08 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
JS 验证码功能的三种实现方式
Nov 26 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
Nov 30 Javascript
小程序实现文字循环滚动动画
Jun 14 Javascript
深入理解Vuex 模块化(module)
Sep 26 #Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 #Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 #jQuery
Vue from-validate 表单验证的示例代码
Sep 26 #Javascript
微信小程序之蓝牙的链接
Sep 26 #Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 #jQuery
jQuery EasyUI开发技巧总结
Sep 26 #jQuery
You might like
PHP开发框架总结收藏
2008/04/24 PHP
PHP强制转化的形式整理
2020/05/22 PHP
js兼容的placeholder属性详解
2013/08/18 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
Python卸载模块的方法汇总
2016/06/07 Python
Python内置函数delattr的具体用法
2017/11/23 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python实现简单图书管理系统
2019/11/22 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
django中ImageField的使用详解
2020/12/21 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
打架检讨书50字
2014/01/11 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
销售员态度差检讨书
2014/10/26 职场文书
护士2014年终工作总结
2014/11/11 职场文书
公司董事任命书
2015/09/21 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书