微信小程序——通讯录列表

分享一个大牛写的通讯录列表,十分感谢这位大牛!大牛在blog中有贴出代码,大家直接复制黏贴就可以,棒棒哒~!
https://blog.csdn.net/weixin_38289645/article/details/81781165
ps:并不是真的直接复制黏贴就好,比如数据,人家是从服务端取的,咱可以先写死,大牛文章里有放出数据格式,把数据中的items改为brands,把数据塞入someArr,就能愉快的使用了。
先上一个大牛的效果图。


本文的重点,其实上面已经说完了,哈哈哈。下面大家随便看看就好

实现功能

1、一个滑动的通讯录列表(大牛做的其实是品牌列表,但是这不重要),拥有粘性头部(粘性头部就是滑动到B模块,B会固定在顶部)
2、列表与右边的首字母索引是联动的(点字母可以跳转列表对应位置,滑动列表,索引active也会跟着变化)。

image.png

小小小小的bug

整体这个代码是没有毛病的,细节上有一点点要优化的。
1、点击索引Z,Z中的数据只有几条不满一屏,屏幕顶部是X的数据时,索引active会由Z变为X
原因:目测是点击时,索引active为Z,列表滚动到Z的位置,但是由于Z的位置是列表最下方且不足一屏,列表的实际滑动距离是到X的位置,之后由滑动距离计算索引active,于是索引active又变成了X

2、因为粘性头部其实是另外一个元素,被固定在顶部。所以可能会出现两个头部部分重叠的情况。


image.png

项目里的一些更改

1、我需要在列表的头部加入一个搜索框,一开始是加在<scroll-view>上方,但是由于搜索框占据了一部分的高度,<scroll-view>的高度是100%,不大好计算。于是之后直接把搜索框塞到了粘性头部(定位)里,一起定位到最高。<scroll-view>再扣除相应的高度(我是用padding-top,把输入框的高度空出来)

2、数据格式处理中碰到的问题。大牛的代码中有涉及到数据处理,大牛的原始数据格式如下。

//原始数据格式
[{
  brandId:'001',
  brandName:'法拉利',
  initial:'A'
},{
  brandId:'001',
  brandName:'法拉利',
  initial:'F'
}]

我的数据格式也差不多,唯一的区别是,大牛得到的数据格式,是根据initial由A到Z排序过的,我的数据是乱序的,首先想到的就是sort排序。
呵呵,然鹅,sort在json排序数据的时候,有!问!题!当你的数据格式如上乱序排列,并且数据量超过10以上,sort排序之后得到的数据,仍然是乱七八糟的。很忧伤,于是只能默默地for循环排序了。

3、在滑动列表里,特别是旁边有索引的列表,有个滑块....emmmm,我是拒绝的,所以用了样式去除

::-webkit-scrollbar {
  width: 0;
  height: 0;
  color: transparent;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,376评论 3 119
  • 作为一名资深摄影小白,本宝宝咬咬牙花了一个月的工资买了一款轻便型女生最爱、旅游摄影入门级单反佳能100D。一年的时...
    宅酱零零0o阅读 7,405评论 3 50
  • 人们常用“你很土!”来形容一个人庸俗,品位低,而当事人却不以为然,而且仍旧是怡然自乐。 土铸就成大地的躯干,我本人...
    江清书阅读 420评论 2 1
  • 满满的成就感
    大A小b阅读 212评论 0 0
  • 贱人贱人贱人贱人贱人贱人贱人贱人就是矫情! 贱人就是贱人,不存在什么矫情不矫情。你说这是公共场合,我说这是休息时间...
    徐小蕾阅读 326评论 0 0

友情链接更多精彩内容