自已开发完美的触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
手机端网页版app在使用下拉列表时,传统的下拉列表使用起来体验非常不好,一般做的稍好一点的交互功能界面都不会直接使用下拉列表,所以app的原生下拉列表都是弹窗列表选择,网页型app从使用体验上来当然也应该做成那样,前段时间在开发网页版app时就遇到这种需求,不仅是日期选择器,数据列表、变量列表选择等等下拉列表型需求都需要,网上找来找去只找到一款比较好的mobiscroll,不过下载比较麻烦,感觉比较奇怪的是jquery.mobile、jeasyui.mobile都没有提供这种控件,不知道为什么?虽然我不是专做前端开发,不过几乎全能型的我觉的不难开发吧,在家熬了一夜试了几种方法终于找到一种几乎完美的方法!在后来的使用中不断完善,现在公开提供给广大程序员。先看看效果图:
由于这控件的滚动是使用div原生滚动方法,触摸屏使用时可以有惯性滚动效果,也实现了鼠标可以操作,不过没有实现惯性滚动效果。由于此控件主要是面向触摸屏的,所以嘛触摸屏完美就好了,我也懒的弄鼠标版的特效了。此控件已封装成jquery插件,没有边框,100%宽,使用很方便,比如套入弹窗后就是上图效果。
代码使用方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $( "#scrollbox" ).EasyScrollBox({ fontSize: 32, fontFamily: '' , color: '#000' , lineHeight: 1.5, spaceRows: 2, value: '4' , data: data1, textFiled: 'txt' , valueFiled: 'id' , onSelected: function (index, value) { $( "#Text1" ).val(value); } }); |
使用弹窗完整的使用方法代码如下,效果就是上图的样子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <!-- ui-dialog --> <div id= "dialog" class = "easyui-dialog" style= "padding:20px 6px;width:80%;" data-options= "inline:true,modal:true,closed:true,title:'设置数值'" > <div id= "scrollbox" ></div> <div class = "dialog-button" > <a href= "javascript:void(0)" class = "easyui-linkbutton" style= "width:100%;height:35px" onclick= "$('#dialog').dialog('close')" >确 定</a> </div> </div> <script type= "text/javascript" > $( function () { //对象型数据 var data = []; for ( var i = 0; i < 100; i++) { var m = {}; m.id = i; m.txt = "数据" + i; data.push(m); } $( "#dialog" ).dialog(); // Link to open the dialog $( "#dialog-link" ).click( function (event) { $( "#dialog" ).dialog( "open" ).dialog( 'center' ); //重新赋值 $( "#scrollbox" ).EasyScrollBox({ fontSize: 32, fontFamily: '' , color: '#000' , lineHeight: 1.5, spaceRows: 2, value: '4' , data: data, textFiled: 'txt' , valueFiled: 'id' , onSelected: function (index, value) { $( "#Text1" ).val(value.id); } }); event.preventDefault(); }); }); </script> |
也可以这么用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //字符串数据 var data1 = []; for ( var i = 0; i < 100; i++) { data1.push(i); } $( "#scrollbox" ).EasyScrollBox({ fontSize: 32, fontFamily: '' , color: '#000' , lineHeight: 1.5, spaceRows: 2, value: '4' , data: data1, onSelected: function (index, value) { $( "#Text1" ).val(value); } }); $( "#dialog-link1" ).click( function (event) { $( "#dialog" ).dialog( "open" ).dialog( 'center' ); event.preventDefault(); }); |
如果想要一点三维效果,直接加样式即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #cover_top_EasyScrollBox{ background: -ms-linear-gradient(top, #000000, #ccc); /* IE 10 */ background:-moz-linear-gradient(top, #000000,#ccc);/*火狐*/ background:-webkit-gradient(linear, 0% 0%, 0% 100%,from( #000000), to(#ccc));/*谷歌*/ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from( #000000), to(#ccc)); /* Safari 4-5, Chrome 1-9*/ background: -webkit-linear-gradient(top, #000000, #ccc); /*Safari5.1 Chrome 10+*/ background: -o-linear-gradient(top, #000000, #ccc); /*Opera 11.10+*/ } #cover_bottom_EasyScrollBox{ background: -ms-linear-gradient(top, #ccc, #000000); /* IE 10 */ background:-moz-linear-gradient(top, #ccc,#0000ff);/*火狐*/ background:-webkit-gradient(linear, 0% 0%, 0% 100%,from( #ccc), to(#000000));/*谷歌*/ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from( #ccc), to(#000000)); /* Safari 4-5, Chrome 1-9*/ background: -webkit-linear-gradient(top, #ccc, #000000); /*Safari5.1 Chrome 10+*/ background: -o-linear-gradient(top, #ccc, #000000); /*Opera 11.10+*/ } |
使用非常简单,必须引用的框架jquery.min.js,我的框架控件:EasyScrollBox.js。
演示例子全代码文件:
https://files.cnblogs.com/files/easywebfactory/EasyScrollBox_demo.rar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库