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

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

8a53de138be44c29e014b10c124a4c38.gif

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

// 数据排序

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 += ''+ letterArr[i] +''

}

$('.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())

}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了实现Vue+Element UI仿微信at联系人的功能,可以按照以下步骤进行: 1. 首先安装Vue和Element UI,可以使用npm进行安装。 2. 在Vue中使用Element UI的组件,可以在需要使用的组件中引入,例如: ```javascript import { Input, Autocomplete } from 'element-ui'; export default { components: { 'el-input': Input, 'el-autocomplete': Autocomplete } } ``` 3. 在页面中使用Autocomplete组件实现at联系人的功能,例如: ```html <el-autocomplete v-model="inputValue" :fetch-suggestions="querySearchAsync" placeholder="请输入内容" @select="handleSelect"> <template slot-scope="{ item }"> <div class="name">{{ item.value }}</div> </template> </el-autocomplete> ``` 在data中定义inputValue,querySearchAsync方法用于异步获取联系人列表,handleSelect方法用于选择联系人后的回调。 4. 根据微信的UI样式,可以自定义Element UI的样式,例如: ```css .el-autocomplete .el-input__inner { padding-left: 30px; } .el-autocomplete .el-input__suffix { font-size: 16px; color: #999; left: 10px; } .el-autocomplete .el-autocomplete-suggestion__list { margin-top: 0; border-radius: 0; box-shadow: none; border: 1px solid #dcdfe6; } .el-autocomplete .el-autocomplete-suggestion__item { padding: 10px 20px; font-size: 14px; color: #333; } .el-autocomplete .el-autocomplete-suggestion__item:hover { background-color: #f5f7fa; } ``` 5. 最后,根据微信的UI布局,可以使用Element UI的Tabs组件实现左侧联系人列表和右侧消息窗口的切换,例如: ```html <el-tabs v-model="activeTab"> <el-tab-pane label="联系人列表" name="contact-list"> <!-- 联系人列表 --> </el-tab-pane> <el-tab-pane label="消息窗口" name="message-window"> <!-- 消息窗口 --> </el-tab-pane> </el-tabs> ``` 在data中定义activeTab,用于控制Tabs的切换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值