写在前面

很多情况下,产品希望统一安卓和IOS select交互和样式。但是众所周知,IOS和安卓的select唤起的选择界面并不是样的,甚至IOS不同系统版本以及安卓不同系统版本下的select唤起的界面也不是相同的。而且省市区多选的需求,不管是IOS和安卓都没有提供原生界面的支持。所以唯一的办法就是web去模拟select唤起界面。

如上图所以,中间的区域是支持触摸运动。什么触摸运动?AlloyTouch不就是专门干这个的吗!

但是需要停在某个日期上!什么需要停在某个日期上?AlloyTouch不是可以配置step的吗!

所有问题迎刃而解~

在线演示

http://alloyteam.github.io/AlloyTouch/select/simple/

插件使用

先引用依赖的JS和CSS文件。

<link rel="stylesheet" href="select.css" />
<script src="../../transformjs/transform.js"></script>
<script src="../../alloy_touch.js"></script>
<script src="../../alloy_touch.select.js"></script>

然后:

new AlloyTouch.Select({
options: [
{ value: "all", text: "累计" },
{ value: "2015-9", text: "2015年9月" },
{ value: "2015-8", text: "2015年8月" },
{ value: "2015-7", text: "2015年7月" },
{ value: "2015-6", text: "2015年6月" },
{ value: "2015-5", text: "2015年5月" },
{ value: "2015-4", text: "2015年4月" },
{ value: "2015-3", text: "2015年3月" },
{ value: "2015-2", text: "2015年2月" },
{ value: "2015-1", text: "2015年1月" },
{ value: "2014-12", text: "2014年12月" },
{ value: "2014-11", text: "2014年11月" },
{ value: "2014-10", text: "2014年10月" }
],
selectedIndex: 3,
change: function (item, index) {
},
complete: function (item, index) {
}
})
  • options是所有项的集合
  • selectedIndex是初始选中项的索引
  • change是改变的回调
  • complete是点击完成按钮的回调

核心原理

Transform(scroll);
new AlloyTouch({
touch: container,
target: scroll,
initialValue: selectedIndex * -1 * step,
property: "translateY",
min: (len - 1) * -30,
max: 0,
step: step
});
  • container是触摸的区域
  • scroll就是滚动的对象
  • step就是每一个日期的高度
  • initialValue是初始的位置,会根据当前的索引selectedIndex乘以step计算出位置

通过上面的配置,scroll最终都会被校正到step的整数倍,小于min会回弹,大于max也会回弹。

总结

可以看到,AlloyTouch很擅长处理触摸运动。当然上面只是一个简单的例子,这仅仅是一个开始!

后续还会给大家带来:

  • AlloyTouch无限循环select实战
  • AlloyTouch多项级联select实战
  • AlloyTouch实现3D效果select实战

Github

https://github.com/AlloyTeam/AlloyTouch

你要触摸的一切都在这里。

AlloyTouch之select选择插件的更多相关文章

  1. 纯原生js移动端城市选择插件

    接着上一篇纯js移动端日期选择插件,话说今天同事又来咨询省市县联动的效果在移动端中如何实现,还是老样子,百度上一搜,诶~又全是基于jquery.zepto的,更加可恨的是大多数都是PC版的,三个sel ...

  2. sencha touch 带本地搜索功能的selectfield(选择插件)

    带本地搜索功能的选择插件,效果图: 在使用selectfield的过程中,数据过大时,数据加载缓慢,没有模糊查询用户体验也不好, 在selectfield的基础上上稍作修改而成,使用方式同select ...

  3. #Plugin 中国省市选择插件

    中国省市选择插件  ChineseCities 1.原生JS,不依赖jquery,zepto 2.前端学习交流群:814798690 源码查看 点击下载 https://github.com/chao ...

  4. 【jquery】多日期选择插件easyui date

    1.本次介绍一个好用的 多日期选择插件:EasyUI date,适用于:需要一次性选择多个日期,无需手动一个一个进行添加. 2.效果图: 3.下载地址:http://www.jeasyui.com/d ...

  5. Chosen:Select 选择框的华丽变身

    HTML Form 表单里的各种组件,例如文本输入框,textarea,按钮等,都可以通过CSS或其它技术进行美化,让它们看起来很漂亮了,唯独下拉列表选项框(select box),不管你怎么做,它摆 ...

  6. 移动端城市选择JavaScript插件(基于WG的城市选择插件的修改版本)

    周末的时候趁着一次机会,拿WG(博客)开发的城市选择插件改了一个移动端可以直接用的城市选择插件. 原版插件是基于原声JavaScript写的,在此先感谢作者. 我做的只是依照肯德基注册会员的页面的交互 ...

  7. Notes: select选择框

    HTML选择框通过select标签创建,该元素是HTMLSelectElement的实例,拥有以下属性和方法: selectedIndex:选中项的索引 options:选择框的所有选项 add:向选 ...

  8. jQuery取得select选择的文本与值

    jquery获取select选择的文本与值获取select :获取select 选中的 text :$("#ddlregtype").find("option:selec ...

  9. select 选择的制作

    我说的select选择是指 手机端的话,一般考虑元素 + 伪类制作 .checkbox{ border:1px solid #987;width:16px;height:16px; } .checkb ...

随机推荐

  1. 虔诚的墓主人(bzoj 1227)

    Description 小W 是一片新造公墓的管理人.公墓可以看成一块N×M 的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地.当地的居民都是非常虔诚的基督徒,他们愿意提前为自己 ...

  2. PHP根据URL提取根域名

    <?php #使用示例 echo getBaseDomain('http://blog.jp.goo.ne.jp/index.php')->domain;echo "\n&quo ...

  3. Java线程:线程状态

    线程可以创建6状态: New()新创建.Runnable(可运行).Blocked(被阻塞). Waiting(等待).Timed waiting(计时等待).Terminated(被终止)1 新建线 ...

  4. quick-cocos2d-x添加到Pomelo的支持

    https://github.com/luoxinliang/pomelo_quick_x/tree/master/pomelo_quick_x

  5. Flex移动皮肤开发(二)

    范例文件 mobile-skinning-part2.zip 在这个讨论创建 Flex 移动 skin 的系列的 第 1 部分 中,我讨论了 Flex 团队在 Mobile 主题中所做的性能优化的原理 ...

  6. HTML5画布(CANVAS)速查简表

    HTML5画布(CANVAS)速查简表 http://www.webhek.com/misc/html5-canvas-cheat-sheet/

  7. android studio导入矢量svg图标技巧

    1.在android studio中打开File-->Settings-->Plugins,在Plugins中输入SVG2VectorDrawable搜索插件,并安装. 2.安装完成重启a ...

  8. git 终端克隆

    mac版 用终端克隆码云中的文档到PC端   第一步:cd desktop //打开桌面 第二步:ls //打印桌面 第三步:(cd +建好的文件夹拖进去) //自己建好的文件夹 或者cd + 文件名 ...

  9. CodeForces 721A

    A. One-dimensional Japanese Crossword time limit per test:1 second memory limit per test:256 megabyt ...

  10. iOS initWithFrame、initWithCoder、awakeFromNib的区别解析

    当我们需要自定义一个View控件时,会有 initWithFrame.initWithCoder.awakeFromNib 这三个系统方法,关于这三个方法何时调用,如何调用,有时候可能很多人会弄混淆. ...