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


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 相关文章推荐
解决 FireFox 下[使用event很麻烦] 的问题.
Aug 22 Javascript
学习ExtJS(二) Button常用方法
Oct 07 Javascript
JavaScript关于select的相关操作说明
Jan 13 Javascript
js实现汉字排序的方法
Jul 23 Javascript
JavaScript File API文件上传预览
Feb 02 Javascript
js与applet相互调用的方法
Jun 22 Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 Javascript
Vue不能检测到Object/Array更新的情况的解决
Jun 26 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
Aug 17 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
深入理解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中使用Oracle数据库(3)
2006/10/09 PHP
简单的PHP图片上传程序
2008/03/27 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
wxPython中listbox用法实例详解
2015/06/01 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
用Python写冒泡排序代码
2016/04/12 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
医院总经理岗位职责
2014/02/04 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
销售2014年度工作总结
2014/12/08 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
初婚初育证明范本
2015/06/18 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫