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


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 相关文章推荐
索趣科技的答案
Feb 07 Javascript
Javascript 兼容firefox的一些问题
May 21 Javascript
Jquery为a标签的href赋值实现代码
May 03 Javascript
ExtJS[Desktop]实现图标换行示例代码
Nov 17 Javascript
javascript 用函数语句和表达式定义函数的区别详解
Jan 06 Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 Javascript
分享javascript计算时间差的示例代码
Mar 19 Javascript
理解javascript中的with关键字
Feb 15 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
Jun 13 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
json定义及jquery操作json的方法
Sep 29 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 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
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
2013/04/23 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
python实现画图工具
2020/08/27 Python
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
2014年督导工作总结
2014/11/19 职场文书
2014年统战工作总结
2014/12/09 职场文书
培训师岗位职责
2015/02/14 职场文书
让子弹飞观后感
2015/06/11 职场文书
Rust中的Struct使用示例详解
2022/08/14 Javascript