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,一经查实,立即删除!

相关文章

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

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

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

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

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…

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

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

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的值就会生成不同的布…

LeetCode 625. 最小因式分解(贪心)

文章目录1. 题目2. 解题1. 题目 给定一个正整数 a&#xff0c;找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a。 如果不存在这样的结果或者结果不是 32 位有符号整数&#xff0c;返回 0。 样例 1 输入&#xff1a; 48 输出&#xff1a; 68样例 2 输入&#xff1a; 15…

u盘无法显示在计算机,插进电脑就是不认 不显示盘符的U盘是闹哪样?

唉&#xff0c;本来今天想和大家聊聊Windows 10春季创意者更新有啥好玩的东西&#xff0c;外加有哪些大坑需要注意和避免&#xff0c;结果微软跳票了&#xff0c;以下就省略下千字的小编内心独白吧。每次大版本的Windows更新对懒人或者对电脑来说&#xff0c;是个绝佳清理电脑的…

LeetCode 582. 杀死进程(图的遍历)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 给 n 个进程&#xff0c;每个进程都有一个独一无二的 PID &#xff08;进程编号&#xff09;和它的 PPID &#xff08;父进程编号&#xff09;。 每一个进程只有一个父进程&#xff0c;但是每个进程可能会有一个或者多个孩子进程…

LeetCode 737. 句子相似性 II(并查集)

文章目录1. 题目2. 解题1. 题目 给定两个句子 words1, words2 &#xff08;每个用字符串数组表示&#xff09;&#xff0c;和一个相似单词对的列表 pairs &#xff0c;判断是否两个句子是相似的。 例如&#xff0c;当相似单词对是 pairs [["great", "fine&qu…

计算机硬盘怎么设置ntfs,每次设置系统后,能否更改计算机硬盘分区的fat32和ntfs格式?...

f3622635硬盘的格式转换一个&#xff0c;FAT32到NTFS在“运行”中输入“ CMD”以打开“命令提示符”窗口&#xff0c;输入: “ CONVERT F: / FS: NTFS”&#xff0c;其中“ F: ”是分区驱动器号(带冒号)&#xff0c;“ / FS: NTFS“是将指定的分区转换为NTFS格式.我认为它会很快…

LeetCode 708. 循环有序列表的插入

文章目录1. 题目2. 解题1. 题目 给定循环升序列表中的一个点&#xff0c;写一个函数向这个列表中插入一个新元素&#xff0c;使这个列表仍然是循环升序的。 给定的可以是这个列表中任意一个顶点的指针&#xff0c;并不一定是这个列表中最小元素的指针。 如果有多个满足条件的…

VMWare serve 2.0 进入 RHEL Linux rescue模式

可能由于我的鼠标点击速度比较慢所以一直没机会在 VMware Serve启动的时候按F2进入bios 模式&#xff0c;哈哈。 1.在次用另外一种方式&#xff1a; 2.进入bios 系统后&#xff0c;选择“boot”&#xff0c;再选"CD/ROM"&#xff0c;上移到第一位。 3.在boot:后面输入…

LeetCode 755. 倒水(模拟)

文章目录1. 题目2. 解题1. 题目 给出一个地形高度图&#xff0c; heights[i] 表示该索引处的高度。 每个索引的宽度为 1。在 V 个单位的水落在索引 K 处以后&#xff0c;每个索引位置有多少水&#xff1f; 水最先会在索引 K 处下降并且落在该索引位置的最高地形或水面之上。然…