JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)


Posted in Javascript onAugust 16, 2017

今天做到了一个联系人列表的需求, 要求和微信的一样! 写出来分享给大家, 使用了jq和doT模版引擎

JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)

首先对数据源进行数据排序

// 数据排序
 function sortData(data) {
  var letterArr = [];
  for (var i = 0; i < data.length; i++) {
   for (var j = 0; j < data.length; j++) {
    if (data[i].flag < data[j].flag) {
     var temp = data[i];
     data[i] = data[j];
     data[j] = temp;
    }
   }
   }
   if (f_check_uppercase(data[0].flag)) {
   letterArr.push(data[0].flag)
   } else {
   letterArr.push('#')
   }
  for (var i = 0; i < data.length; i++) {
   if(f_check_uppercase(data[0].flag)) {
    data[0].flagLetter = data[0].flag
   } else {
    data[0].flagLetter = '#'
   }
   if (i>0) {
    if (data[i].flag !== data[i-1].flag) {
     if (f_check_uppercase(data[i].flag)) {
      data[i].flagLetter = data[i].flag;
      letterArr.push(data[i].flag)
     } else {
      data[i].flagLetter = '#';
      letterArr.push('#')
     }
    }
   }
   }
// 侧边栏
   var str = '' ;
   for (var i = 0; i < letterArr.length; i++) {
   str += '<a ontouchstart="anchorJump(this)" >'+ letterArr[i] +'</a>'
   }
   $('.slidePage div').html(str)
   $('.resultList').html(doT.template($('#listT').text())(data))
 }
 // 判断是否是字母
 function f_check_uppercase(obj) {
  if (/[A-Z]/.test(obj)) { 
   return true; 
  } 
  return false; 
 }

然后是跳转锚点

location.hash = '#id' 和a标签的作用相同, 跳转到指定锚点

// 跳转锚点
 function anchorJump(n) {
  var text = $(n).text();
  if (text.length < 2) {
   $('.letter').text(text)
   $('.letter').css({'opacity':' 1'})
   location.hash = '#' + text
  }
 }

手指滑动, 页面跳转

// 手指滑动
 function move() {
  // 阻止默认事件, 页面滑动
  event.preventDefault();
  anchorJump(document.elementFromPoint(event.changedTouches[0].clientX,event.changedTouches[0].clientY))
 }

document.elementFromPoint(x,y) 获取指定坐标的顶层元素

最后滑动结束, 手指离开屏幕

// 滑动结束
 function touchEnd() {
  var opcityNum = 1;
  setInterval(function () {
   opcityNum -= 0.1;
   if (opcityNum > 0) {
    $('.letter').css({'opacity': opcityNum})
   } else {
    clearInterval();
   }
  },50)
 }

点击每条数据

// 点击事件
 function clickInfo(ele) {
  alert($(ele).find('.name').text())
 }

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助~如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持!

Javascript 相关文章推荐
论坛特效代码收集(落伍转发-不错)
Dec 02 Javascript
javascript 实现键盘上下左右功能的小例子
Sep 15 Javascript
5分钟理解JavaScript中this用法分享
Nov 09 Javascript
jquery实现点击消失的代码
Mar 03 Javascript
jQuery通过写入cookie实现更换网页背景的方法
Apr 15 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
canvas实现弧形可拖动进度条效果
May 11 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
Dec 07 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 Javascript
Webpack的dll功能使用
Jun 28 Javascript
微信小程序页面渲染实现方法
Nov 06 Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 #Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
Aug 16 #Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 #Javascript
vue实现留言板todolist功能
Aug 16 #Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
Aug 16 #Javascript
vue的事件绑定与方法详解
Aug 16 #Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 #Javascript
You might like
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
Nginx实现反向代理
2017/09/20 Servers
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
使用js画图之画切线
2015/01/12 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
vc6编写python扩展的方法分享
2014/01/17 Python
Python字符串替换实例分析
2015/05/11 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
python3 拼接字符串的7种方法
2018/09/12 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Python实现Linux监控的方法
2019/05/16 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
postman和python mock测试过程图解
2020/02/22 Python
Python将字典转换为XML的方法
2020/08/01 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
校园达人秀策划书
2014/01/12 职场文书
酒店营销策划方案
2014/02/07 职场文书
参赛口号
2014/06/16 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript