z-iosselect
v0.0.9
Published
iosselect for andriod and ios
Downloads
8
Readme
求打赏
master主干为稳定版,可放心使用
分支beta,大幅度减少dom操作,源代码从3000行降到1500行,优化性能,但是还没经过项目实践,欢迎试用beta版并告知bug
iosselect
#webapp模仿ios下拉菜单
html下拉菜单select在安卓和IOS下表现不一样,iosselect正是为统一下拉菜单样式而生
我们以IOS下select的交互和样式为蓝本,开发了这一组件
特点
可以做到0依赖,只需引用一个js和css即可,样式可自己定制,也可使用默认样式
更新日志
2016-12-27
修复chrome版本55.x下滚动缓慢的问题
修复一个页面不能同时实例化多个组件的问题
2016-12-6
发布分支beta,大幅度减少dom操作,源代码从3000行降到1500行,优化性能,欢迎使用beta版
2016-11-28
1,添加options.itemShowCount参数,展示的选项可以为3,5,7,9。默认为7项
2016-11-11
1,npm publish
2016-11-7
1,支持最多5级级联,level参数可设置1,2,3,4,5
2,支持设置高度和高度单位,默认单位px,itemHeight默认35,headerHeight默认44
比如我们要使用rem,可以在options参数里设置如下参数
itemHeight: 0.7,
headerHeight: 0.88,
cssUnit: 'rem',
3,联动后默认值,比如年份变更后,之前的月份选中值不变
使用方法
方法1:npm install iosselect
方法2:直接引用静态文件,参看demo
文件说明
src------iosselect基于iscroll5开发,在这个文件夹下可以看到iscroll.js,iosselect.js,iosselect.css,如果项目里有单独使用iscroll5,可以使用这个版本
merge------合并了iscroll与iosselect,做到组件0依赖,方便开发
demo------使用demo,说明如下:
one------一级下拉菜单,以银行选择为实例
two------二级下拉菜单,相互独立,没有关联,以三国杀组合选将为例
three------三级下拉菜单,省市区选择三级联动
rem------rem框架adaptivejs的特定版本
datepicker------日期选择器,通过方法筛选数据,实现三级联动,ajax获取数据时可参考此例
five------日期时间选择器,五级选择器,前三级联动
使用说明
###API## new IosSelect(level, data, options) level: 级联等级,支持1,2,3,4,5 必选项 data: [oneLevelArray[, twoLevelArray[, threeLevelArray, [fourLevelArray, [fiveLevelArray]]]]] 除了用数组,也可以用方法 options: container: 组件的父元素,传入css3选择器,比如'.a' 或 '#a'之类的 callback: 选择完毕后的回调函数 必选 title: 选择框title 可选,没有此参数则不显示title itemHeight: 每一项的高度,可选,默认 35 headerHeight: 组件标题栏高度 可选,默认 44 cssUnit: css单位,目前支持px和rem,默认为px addClassName: 组件额外类名 可选,用于自定义样式 relation: [1, 1, 0, 0]: [第一二级是否关联,第二三级是否关联,第三四级是否关联,第四五级是否关联] ,默认不关联,即默认是[0, 0, 0, 0] oneLevelId: 第一级选中id 可选 twoLevelId: 第二级选中id 可选 threeLevelId: 第三级选中id 可选 fourLevelId: 第四级选中id 可选 fiveLevelId: 第五级选中id 可选 showLoading: 如果你的数据是异步加载的,可以使用该参数设置为true,下拉菜单会有加载中的效果 itemShowCount: 组件展示选项数目 可以为3,5,7,9 默认为7 ##参数说明##
data: 数组,前五项分别对应级联1,2,3,4,5项,每一项又是一个数组或方法
如果是数组:
每一项数组中包含一系列对象,每个对象必须要有id,作为该条数据在该项数组中的唯一标识,value作为显示值,parentId是可选属性,作为关联的标志
数据形如:
var iosProvinces = [
{'id': '130000', 'value': '河北省', 'parentId': '0'}
];
var iosCitys = [
{"id":"130100","value":"石家庄市","parentId":"130000"},
];
当我们选择河北省时,就到城市中找到parentId为河北省id的数据,然后展示出来
如果是方法:
其参数分别为前几列的选中值和callback方法,比如:第一列获取数据的方法参数为callback,第二列参数为one,callback,第三列参数为one,two,callback,依次类推,第五列的参数为one,two,three,four,callback,callback调用时传入数据即可
数据形如:
var yearData = function(callback) {
callback(formatYear(nowYear))
}
var monthData = function (year, callback) {
callback(formatMonth());
};
var dateData = function (year, month, callback) {
callback(formatDate(28));
}
var hourData = function(one, two, three, callback) {
var hours = [];
for (var i = 0,len = 24; i < len; i++) {
hours.push({
id: i,
value: i + '时'
});
}
callback(hours);
};
var minuteData = function(one, two, three, four, callback) {
var minutes = [];
for (var i = 0, len = 60; i < len; i++) {
minutes.push({
id: i,
value: i + '分'
});
}
callback(minutes);
};
具体可参考demo中的日期选择器和日期时间选择器
options.callback(selectOneObj, selectTwoObj, selectThreeObj, selectFourObj, selectFiveObj) 每级选中项,包含对应数据的所有字段及dom对象
##以地址选择为例:## ##data为三个数组:## http://zhoushengfe.com/iosselect/demo/three/area.html
--------------------------------------------------------------------------------
##日期选择器## ##data为方法:## http://zhoushengfe.com/iosselect/demo/datepicker/date.html
-------------------------------------------------------------------------------- ##demo说明 一级级联,银行选择
http://zhoushengfe.com/iosselect/demo/one/bank.html
二级级联,三国杀将领组合选
http://zhoushengfe.com/iosselect/demo/two/sanguokill.html
三级级联,省市区选择
http://zhoushengfe.com/iosselect/demo/three/area.html
viewport缩放时处理方案
http://zhoushengfe.com/iosselect/demo/rem/bank.html
日期选择器 三级联动,通过方法获取数据,并且有加载中效果
http://zhoushengfe.com/iosselect/demo/datepicker/date.html
日期时间选择器,共五级,通过方法获取数据
http://zhoushengfe.com/iosselect/demo/five/time.html
###如果要修改菜单项里样式,请自行修改样式,比如:
.ios-select-widget-box ul li
###如果要设置页面默认选中值,可以将默认值写在html元素中,以地址选择器为例:
<span data-city-code="510100" data-province-code="510000" data-district-code="510105" id="show_contact">四川省 成都市 青羊区</span>
页面就有默认选项啦
如果有使用问题,可加QQ群:419468553