html 仿ios选择控件,仿ios垂直滚动选择

注:必须在手机模式下才有效

组件效果图

0cfb62059c66?mtype=group

组件效果图

使用示例

html

css

.box{

margin: 20px auto 20px auto;

height: 188px;

width: 90%;

position: relative;

}

.box1{

position: absolute;

height: 100%;

width: 60%;

border-right: 1px solid #aaa;

left: 0;

}

.box2{

right: 0;

position: absolute;

height: 100%;

width: 40%;

}

.select{

position: absolute;

height: 50px;

width: 100%;

top: 70px;

border-top: 1px solid #aaa;

border-bottom: 1px solid #aaa;

}

js

$(function(){

option1 = ['事业单位','省考公务员','国家公务员','政治与法','教师考试','清华大学','北京大学'];

_S1 = new A_ScrollSelect('box1');

_S1.init(option1);

option2 = ['北京','上海','广州','深圳','武汉','成都','重庆'];

_S2 = new A_ScrollSelect('box2');

_S2.init(option2);

})

方法

init()

初始化

reLoad(array)

重新加载选择数据

参数为数组

例:

option2 = ['北京','上海','广州','深圳','武汉','成都','重庆'];

_S1.reLoad(option2);

getValue()

获取用户当前选择数据

例:

_S1.getValue();

源码

/*

滚动选择

移动端

*/

function A_ScrollSelect(div){//传进来的或许是一个div id 也可能是一个jQuery div

this._liH = 33;

this._locationY = 0;//上一次的坐标

this._locationStart = 0;//开始触摸时的坐标

// ----------------------------

this._H_action = 50;

this._H_2 = 36;

this._H_3 = 33;

this._H_hide = 33;

this._H_ul = 188;

this._top_max = 0;

// --------------------------------------

this._init = false;

this.reLoad = function(data){

this._box.empty();

this._init = false;

this.init(data);

}

this.init = function(data){

if(this._init){return;}

if(typeof div == 'string'){

var box = $('#'+div);

}else{

var box = div;

}

this._box = box;

this._data = data;

if(data){

this.createDOM(data);

this._num = data.length;

}

this.bindEvent();

this.setTop(2);//设置顶部高度

this.setGear(2);//置初值

this._init = true;

}

this.createDOM = function(data){

var html = '';

html+='

';

html+='

  • ';

html+='

';

html+='

';

for(var i=0;i

html+='

' + data[i] + ' ';

}

html+='

';

html+='

';

this._box.append($(html));

}

this.bindEvent = function(){

var self = this;

var box = this._box;

box.on('touchstart',function(e){

self.gearTouchStart(e);

});

box.on('touchmove',function(e){

self.gearTouchMove(e);

});

box.on('touchend',function(e){

self.gearTouchEnd(e);

});

}

//触摸开始

this.gearTouchStart = function(e) {

var y = e.originalEvent.changedTouches[0].pageY;

this._locationStart = y;//初始值

this._locationY = y;

}

//手指移动

this.gearTouchMove = function(e) {

var self = this;

var y = e.originalEvent.changedTouches[0].pageY;

var ul = this._box.find('ul');

var marginTop = parseFloat(ul.css('margin-top'));

var seat_y = this._locationY;//上一次的位置

var y_result = marginTop + y - seat_y;

var min = (this._num-1) * this._H_hide * -1;

if(marginTop>0){

y_result = 0;

}

if(marginTop

y_result = min;

}

ul.stop();//停止当前动画

ul.css({'margin-top':y_result});//滚动

seat_y = y;

var h_li = this._liH;//单个列的高

var margin = marginTop;

var difference = Math.abs(marginTop - seat_y);

// 变换样式

if(difference > h_li/2){

var multiple = parseInt(margin/h_li) * -1 ;

this.setGear(multiple);

}

this._locationY = y;

}

//离开屏幕

this.gearTouchEnd = function(e) {

var ul = this._box.find('ul');

// 取整

var h_li = this._liH;

var margin = parseFloat(ul.css('margin-top'));

var difference = margin % h_li;

if(difference > h_li/2){

y_result = margin - difference + h_li;

}else{

y_result = margin - difference;

}

var min = (this._num-1) * this._H_hide * -1;

if(margin > 0){

y_result = 0;

}

if(margin < min){

y_result = min;

}

ul.animate({'margin-top':y_result},'normal');

}

this.getValue = function(){

return this._box.find('.list-title-action').html();

}

//控制插件滚动后停留的值

this.setGear = function(val) {

var multiple = val;

var li = this._box.find('li');

if(val < 0||val>(this._num-1)){return;}

li.attr('class','list-title-hide');

li.eq(multiple).attr('class','list-title-3');

li.eq(multiple+1).attr('class','list-title-2');

li.eq(multiple+2).attr('class','list-title-action');

li.eq(multiple+3).attr('class','list-title-2');

li.eq(multiple+4).attr('class','list-title-3');

}

this.setTop = function(n){

var self = this;

var value = n;//减去标题2和标题3 再加上两天假数据

if(value < 0){value = 0;}

if(value >= self._num-1){value = self._num-1;}

var ul = this._box.find('ul');

var h = this._H_hide;

ul.animate({'margin-top':-1*h*n},'normal');

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

asp.net中ADO.NET连接SQL数据库代码和连接Access数据库代码

连接SQL数据库方法&#xff1a; 一、建立连接 1、&#xff08;使用System.Data.SqlClient&#xff09; <1> string strcon; //声明连接字串 strcon "server(local);databasemytable;uidsa;pwdsa;"; //编写连接字串 …

LeetCode 469. 凸多边形(向量叉积)

文章目录1. 题目2. 解题1. 题目 给定一个按顺序连接的多边形的顶点&#xff0c;判断该多边形是否为凸多边形。 注&#xff1a; 顶点个数至少为 3 个且不超过 10,000。 坐标范围为 -10,000 到 10,000。 你可以假定给定的点形成的多边形均为简单多边形。 换句话说&#xff0c;保…

小案例:王者荣耀英雄对战python版代码(仅供娱乐)

直接上代码&#xff1a; #初始化用户信息 import randomprint("本比赛参赛英雄为&#xff1a;1老夫子 2典韦 3吕布") name int(input("请您选择出场英雄&#xff1a;"))if name 1:print("您本次选择的英雄为&#xff1a;老夫子——我会让你明白什么…

2016年10月计算机网络技术,2016年10月自考计算机网络技术练习题及答案(2)

2016年10月自考计算机网络技术练习题及答案(2)一、判断题(针对下面的描述&#xff0c;对的打‘√’&#xff0c;错的打‘X’)1.网络互联层的协议不包括ICMP协议.(错误)2.在同一个网络中&#xff0c;一个主机可有多个IP地址&#xff0c;多个主机也可同时使用一个IP地址.(错误)4.…

每日英语:Lighting: Twigs Shine in Home Decor

The humble twig is finding its way into high-end lighting. The sticks suggest rustic luxury -- think barn weddings and ski resorts -- but can also be found in modern interiors, giving spaces a clean, natural look. twigs:细枝&#xff0c;小树枝    high-e…

小案例:王者荣耀战绩查询系统代码赏析(自娱自乐)

直接上代码&#xff1a; #创建查询系统初始化信息 hero {} id 1000#创建初始化界面 def start():print("***"*9)print("欢迎您使用王者荣耀英雄查询系统&#xff1a;")print("***"*9)print("请按照以下提示信息进行操作&#xff1a;&quo…

LeetCode 1102. 得分最高的路径(优先队列BFS/极大极小化 二分查找)

文章目录1. 题目2. 解题2.1 优先队列BFS2.2 极大极小化 二分查找1. 题目 给你一个 R 行 C 列的整数矩阵 A。矩阵上的路径从 [0,0] 开始&#xff0c;在 [R-1,C-1] 结束。 路径沿四个基本方向&#xff08;上、下、左、右&#xff09;展开&#xff0c;从一个已访问单元格移动到任…

计算机语音未来发展趋势,语音助手横评:发展现状|未来展望

●语音助手现状Siri带动了业内人工智能语音的发展&#xff0c;各大手机厂商都纷纷推出自家的语音助手&#xff0c;不过总体来说&#xff0c;我们心中所期望的那个无所不能的人工智能机器人还是暂时没有办法出现。首先从国内的情况来看&#xff0c;我们使用语音助手的场景也大部…

说说 JavaScript 计时器的工作原理

原文&#xff1a;John Resig http://ejohn.org/blog/how-javascript-timers-work/ How JavaScript Timers Work 从基础的层面来讲&#xff0c;理解JavaScript的定时器是如何工作的是非常重要的。计时器的执行常常和我们的直观想象不同&#xff0c;那是因为JavaScript引擎是单…

LeetCode 1538. Guess the Majority in a Hidden Array

文章目录1. 题目2. 解题1. 题目 We have an integer array nums, where all the integers in nums are 0 or 1. You will not be given direct access to the array, instead, you will have an API ArrayReader which have the following functions: int query(int a, int b…

html5怎么跟安卓交互,html5怎么与android交互

满意答案Android中构建HTML5应用 使用WebView控件,与其他控件的使用方法相同在layout中使用一个标签,WebView不包括导航栏&#xff0c;地址栏等完整浏览器功能&#xff0c;只用于显示一个html. 在WebView中加载Web页面: (1)注意在manifest文件中加入访问互联网的权限&#xff1…

Attempt to write to a read-only database Sqlite

使用WCF做了一个中间层服务&#xff0c;准备把数据同步到Sqlite数据库中&#xff0c;在本地测试的时候没有问题&#xff0c;但放到服务器上却报出了 标题的错误。 StackOverFlow上说是数据库文件的权限问题&#xff0c;于是我把Users的写入权限分配给Users组&#xff0c;问题解…

LeetCode 1258. 近义词句子(哈希+并查集+排序+回溯)

文章目录1. 题目2. 解题1. 题目 给你一个近义词表 synonyms 和一个句子 text &#xff0c; synonyms 表中是一些近义词对 &#xff0c;你可以将句子 text 中每个单词用它的近义词来替换。 请你找出所有用近义词替换后的句子&#xff0c;按 字典序排序 后返回。 示例 1&#…

2022年计算机考研学校,2022计算机考研院校推荐

2022计算机考研院校推荐2022考研复习已经如火如荼的展开了&#xff0c;但是依然有很多同学没有确定好目标院校。计算机是许多考研学生青睐的考研专业&#xff0c;那么选择什么院校成为了关键。为了方便大家更好的择校&#xff0c;新东方在线考计算机研小编下面整理了计算机专业…

LeetCode 1066. 校园自行车分配 II(状态压缩DP)

文章目录1. 题目2. 解题2.1 回溯超时2.2 状态压缩DP1. 题目 在由 2D 网格表示的校园里有 n 位工人&#xff08;worker&#xff09;和 m 辆自行车&#xff08;bike&#xff09;&#xff0c;n < m。所有工人和自行车的位置都用网格上的 2D 坐标表示。 我们为每一位工人分配一…

Bootstrap(二)—格栅系统!

W(A*n)-i W是一个页面的总宽度&#xff0c;比如950px&#xff1b;而A代表一个版块的宽度&#xff0c;设置为apx&#xff1b;n就是分为几个版块&#xff1b;而i就是区块之间的间隔。 例如 950&#xff08;a*24&#xff09;-10 而a40px&#xff1b;改变A和i的值就会生成不同的布…

python中的面向对象:类与对象(重点!!!)

Python中重点与难点&#xff0c;必须熟练掌握&#xff01;&#xff01;&#xff01; 一、面向对象 1、面向对象概念 面向对象(Object Oriented,OO)是软件开发方法&#xff0c;是一种思想。面向对象的对象是指客观世界存在的事物。 我们之前编程所熟悉的思路叫做面向过程&am…