无联动picker组件

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

内容简介:省市区联动这种插件应该很多人用过,在我第一次写这种功能的时候,第一时间就是找插件,尤其是移动端,对当时的我来说从来没有想过自己写。最近看了同事写的省市区的组件,发现几乎所有的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组件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

那些让文案绝望的文案

那些让文案绝望的文案

小马宋 / 北京联合出版公司 / 2015-10 / 45

什么文案60年前就在使用互联网思维? 什么文案让一辆小车在崇尚大车的国度畅销不衰? 什么文案让做文案的人产生“既生瑜何生亮”的绝望? 没错,它是甲壳虫。 远在上世纪五六十年代,这些文案让这辆不起眼的小车畅销不衰。 它的文案风趣而又言之凿凿,它的文案机智而又无可辩驳。 它充满自黑精神,善于借势时事热点,懂得乖巧卖萌,也是天生的段子手。 为了让国内读者一睹这一......一起来看看 《那些让文案绝望的文案》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具