随笔 - 24  文章 - 0  评论 - 202  阅读 - 12万

自已开发完美的触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器

手机端网页版app在使用下拉列表时,传统的下拉列表使用起来体验非常不好,一般做的稍好一点的交互功能界面都不会直接使用下拉列表,所以app的原生下拉列表都是弹窗列表选择,网页型app从使用体验上来当然也应该做成那样,前段时间在开发网页版app时就遇到这种需求,不仅是日期选择器,数据列表、变量列表选择等等下拉列表型需求都需要,网上找来找去只找到一款比较好的mobiscroll,不过下载比较麻烦,感觉比较奇怪的是jquery.mobile、jeasyui.mobile都没有提供这种控件,不知道为什么?虽然我不是专做前端开发,不过几乎全能型的我觉的不难开发吧,在家熬了一夜试了几种方法终于找到一种几乎完美的方法!在后来的使用中不断完善,现在公开提供给广大程序员。先看看效果图:

 

 

由于这控件的滚动是使用div原生滚动方法,触摸屏使用时可以有惯性滚动效果,也实现了鼠标可以操作,不过没有实现惯性滚动效果。由于此控件主要是面向触摸屏的,所以嘛触摸屏完美就好了,我也懒的弄鼠标版的特效了。此控件已封装成jquery插件,没有边框,100%宽,使用很方便,比如套入弹窗后就是上图效果。

代码使用方法如下:

          $("#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);
              }
          });

使用弹窗完整的使用方法代码如下,效果就是上图的样子:

<!-- 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> 

  

也可以这么用:

 

          //字符串数据
          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();
          });

 如果想要一点三维效果,直接加样式即可:

#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

posted on   亲善美  阅读(3687)  评论(3)    收藏  举报
编辑推荐:
· 如何统计不同电话号码的个数?—位图法
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
阅读排行:
· 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析
· 三维装箱问题(3D Bin Packing Problem, 3D-BPP)
· Windows上,10分钟构建一个本地知识库
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 凯亚物联网平台如何通过MQTT网络组件接入设备
< 2025年4月 >
30 31 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 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示