无联动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组件》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Learning JavaScript

Learning JavaScript

Shelley Powers / Oreilly & Associates Inc / 2006-10-17 / $29.99

As web browsers have become more capable and standards compliant, JavaScript has grown in prominence. JavaScript lets designers add sparkle and life to web pages, while more complex JavaScript has led......一起来看看 《Learning JavaScript》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

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

正则表达式在线测试

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

HEX CMYK 互转工具