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


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 相关文章推荐
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
May 25 Javascript
js跳转页面方法实现汇总
Feb 11 Javascript
详解JavaScript语法对{}处理的坑爹之处
Jun 05 Javascript
在JS数组特定索引处指定位置插入元素的技巧
Aug 24 Javascript
jQuery实现精美的多级下拉菜单特效
Mar 14 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
Aug 10 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
Nov 10 Javascript
百度小程序之间的页面通信过程详解
Jul 18 Javascript
js实现中文实时时钟
Jan 15 Javascript
JavaScript实现随机点名器
Mar 25 Javascript
uni-app如何页面传参数的几种方法总结
Apr 28 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
php定时计划任务的实现方法详解
2013/06/06 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
js multiple全选与取消全选实现代码
2012/12/04 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
python如何实现反向迭代
2018/03/20 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
wxPython实现列表增删改查功能
2019/11/19 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
python lambda的使用详解
2021/02/26 Python
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
保洁主管岗位职责
2013/11/20 职场文书
女儿十岁生日答谢词
2014/01/27 职场文书
班级寄语大全
2014/04/10 职场文书
申论倡议书范文
2014/05/13 职场文书
运动会演讲稿100字
2014/08/25 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
幼师求职自荐信
2015/03/26 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
Python获取字典中某个key的value
2022/04/13 Python