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


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 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
JavaScript Timer实现代码
Feb 17 Javascript
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
js open() 与showModalDialog()方法使用介绍
Sep 10 Javascript
jQuery进行组件开发完整实例
Dec 15 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
Feb 15 Javascript
微信小程序商品到详情的实现
Jun 27 Javascript
vue axios登录请求拦截器
Apr 02 Javascript
详解react、redux、react-redux之间的关系
Apr 11 Javascript
vue2.0获取鼠标位置的方法
Sep 13 Javascript
微信小程序实现的日期午别医生排班表功能示例
Jan 09 Javascript
基于vue实现微博三方登录流程解析
Nov 04 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
DOM XPATH获取img src值的query
2013/09/23 PHP
php数组合并的二种方法
2014/03/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
Python中格式化format()方法详解
2017/04/01 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
财务管理专业推荐信
2013/11/19 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
交通事故和解协议书
2014/09/25 职场文书
个人工作年终总结
2015/03/09 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
java executor包参数处理功能 
2022/02/15 Java/Android
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis