无联动picker组件

栏目: JavaScript · 发布时间: 6年前

内容简介:省市区联动这种插件应该很多人用过,在我第一次写这种功能的时候,第一时间就是找插件,尤其是移动端,对当时的我来说从来没有想过自己写。最近看了同事写的省市区的组件,发现几乎所有的picker组件都是根据手指移动距离来滑动,但是有个问题,就是我快速的滑动一下,组件是没办法像原生scroll一样滑动一段距离。想要做这种效果想要计算手指在移动的那段时间内的速度,然后移动一段距离,就像一个小型的小引擎一样。于是自己就想,直接用原生的scroll一样,快速滑动一下,能够自主的移动很长一段距离。本来想把联动和不联动的写成一

省市区联动这种插件应该很多人用过,在我第一次写这种功能的时候,第一时间就是找插件,尤其是移动端,对当时的我来说从来没有想过自己写。

最近看了同事写的省市区的组件,发现几乎所有的picker组件都是根据手指移动距离来滑动,但是有个问题,就是我快速的滑动一下,组件是没办法像原生scroll一样滑动一段距离。想要做这种效果想要计算手指在移动的那段时间内的速度,然后移动一段距离,就像一个小型的小引擎一样。

于是自己就想,直接用原生的scroll一样,快速滑动一下,能够自主的移动很长一段距离。本来想把联动和不联动的写成一个组件,后来发现针对联动和不联动,对于数据处理会比较麻烦,对用起来的时候要专门处理成组件需要的数据格式麻烦了,于是把联动和不联动的分开来写。

同样的,先说明原理:

布局“

无联动picker组件

仅支持最多5列,这边采用float布局,兼容性没问题。每一列都能够scroll。每一列的高度都是40,上下各有两个空白的li。

给每一列一个id,然后给每一列添加滚动监听,在滚动结束的时候获取scrollTop,然后把scrollTop变成40的整数倍。

滚动结束采用了节流的方法,也就是设定一个定时器去触发滚动结束。

我这边返回的是多少列就返回每一列的选中index,所以在改变选中状态的时候先判断当前是否跟之前选中的相同,不相同就改变选中index数组。

由于手指在滑动期间要禁止滚动的定时器,所以在start的时候设定一个状态,要是手指没有end就不触发scroll的定时器方法。

使用:

List的数据格式:

[ [{value: '第三列'},{value:'第三列'},{value: '第三列'}], [{value: '第三列'},{value:'第三列'},{value: '第三列'}], [{value: '第三列'},{value:'第三列'},{value: '第三列'}], [{value: '第三列'},{value:'第三列'},{value: '第三列'}], [{value: '第三列'},{value:'第三列'},{value: '第三列'}] ]

效果:

无联动picker组件

因为是自己用,希望想要使用的可以研究透彻一下,这边还有很多没有实现,比如默认选中,每一列展示的数量等,有需要的可以留言,不过还是希望拷贝源码然后自己改成自己想要的。

已经发布npm: www.npmjs.com/package/wad…

欢迎关注Coding个人笔记 公众号


以上所述就是小编给大家介绍的《无联动picker组件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

《Unity3D网络游戏实战(第2版)》

《Unity3D网络游戏实战(第2版)》

罗培羽 / 机械工业出版社 / 2019-1-1 / 89.00元

详解Socket编程,搭建稳健的网络框架;解决网游中常见的卡顿、频繁掉线等问题;探求适宜的实时同步算法。完整的多人对战游戏案例,揭秘登录注册、游戏大厅、战斗系统等模块的实现细节。 想要制作当今热门的网络游戏,特别是开发手机网络游戏,或者想要到游戏公司求职,都需要深入了解网络游戏的开发技术。本书分为三大部分,揭示网络游戏开发的细节。 第一部分“扎基础”(1-5章) 介绍TCP网络游......一起来看看 《《Unity3D网络游戏实战(第2版)》》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试