z-iosselect

0.0.9 • Public • Published

求打赏

image

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

Dependencies (0)

    Dev Dependencies (1)

    Package Sidebar

    Install

    npm i z-iosselect

    Weekly Downloads

    5

    Version

    0.0.9

    License

    ISC

    Last publish

    Collaborators

    • zbm2001