点击文本框滑动选值

手机屏幕上的上下翻滚菜单使用JS实现.经过十几个小时的折磨,终于有了最初版本.实现办法如下描述:

一.要求和方法

1.一个input输入框,点击后弹出一个翻滚菜单盖在其上,翻滚选好后,点击确定.所选值就到了文本框里.
2.实现这个翻滚菜单使用如下办法:一个菜单DIV,里面是若干菜单项SPAN.菜单DIV设置有竖直滚动条,这样就能滚动菜单项.

菜单DIV的上层,有个包裹层,主要作用是遮住菜单DIV的滚动条.包裹层上还有一层菜单框,用于包裹所有菜单DIV,操作它的显示
和隐藏可以方便地打开关闭菜单.最后,INPUT 菜单框 按钮 放到一个DIV里.结构和主要设定如下:

div // 最外层包含所有 (相对定位)
 input // 输入框
 button // 按钮
div // 所有菜单外层 (相对定位,初始隐藏,长度设为input长度稍大于它)
 div // 菜单外层,为遮菜单DIV滚动条(相对定位,超出隐藏,宽度百分比值等于100/菜单DIV个数)
  div // 菜单面板层(滚动条,高度为菜单项3倍)
   span // 菜单,若干个(块级)
........可有多个菜单面板
3.遮挡滚动条:实现过程中,遮挡菜单DIV滚动条时费了很大劲.最终实现的办法是:将菜单DIV的宽度设为再加上它的滚动条的宽度.
这样一来,上层就显示不出多余的滚动条了,"超出部分隐藏了".那又如何得到菜单DIV宽度,和其滚动条宽度呢.这样.

var scrollbarWidth = menuDiv.offsetWidth - menuDiv.scrollWidth;
意思是offsetWidth这个包含滚动条在内的宽度,减去scrollWidth这个包含滚动区域不包含滚动条的宽度.
然后将菜单DIV的width设为offsetWidth加上上面得出的滚动条宽度值.就实现了
4.菜单出现位置:点击之后,要让它出现在INPUT的上层,左对齐,并且遮住INPUT.这主要是一个算TOP和LEFT的过程.它与INPUT同
级,父级为最外层DIV.这个要有相对定位属性.后面是用JQUERY的position()获取INPUT的位置的,如果不设的话
就错大了.TOP值好算,就是INPUT的outerHeight(),为了盖住INPUT,所以是负值,在前面加-号.
LEFT值和INPUT的左位移设置一样.其实可设为0,因为它们同级,且INPUT没有定位(默认0).但是为了让菜单跟着
INPUT框移动,则有必要这种灵活的计算.
5.遮住文本框:在手机上点击INPUT文本框时,出弹出手机上的输入法.但目前并不需要这个输入,所以不能让它弹出来.解决办法是
不让它点击文本框,在文本框上加一个透明的层,大小和文本框一样,刚好遮住.点击时实际上点这一层.

 

确定

中国 美国 俄国 英国 法国 德国

亚洲 北美 东欧 西欧 地中海 波罗地海

雪地 极光 白马 拿破仑 元首 角斗士

 

当前手机视口

 

js手机滑块模仿的更多相关文章

  1. [js开源组件开发]js手机联动选择地区仿ios 开源git

    js手机联动选择地区 前言:由于网上找到了一个mobiscrool,比较全,但是不开源,只能试用15天,正式版竟然要三千块钱,穷人只能自己动手,写了个只针对弹窗地区选择的. 本站点所有的资源均在git ...

  2. [js开源组件开发]js手机联动选择日期 开源git

    js手机联动选择日期 这里在前面的<js手机联动选择地区>的基础上,改造数据源之后形成的一个日期的选择器,当然你可以使用之前的PC上模式的<日期控件>,它同时也支持手机端,ht ...

  3. JS手机浏览器判断(转)

    整理查询一下,js判断手机浏览器的方法 <script type="text/javascript"> /* * 智能机浏览器版本信息:包括微信内置 * */ var ...

  4. 基于Node.js + jade + Mongoose 模仿gokk.tv

    原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 关于gokk 大学的娱乐活动基本就是在寝室看电影了→_→,一般都会选择去goxiazai.cc上看,里面的资源多,质量高 ...

  5. js手机短信验证

    贴代码之前,我们先讲一下这里我们用到的技术主要有1个.setInterval(),这个方法可以实现倒计时的效果. css: .weui_btn_disabled.weui_btn_default { ...

  6. js 拖动滑块验证

    备注:拖动滑块时尽量平移,chrome浏览器上没有卡顿情况,但是搜狗极速模式和360极速模式都遇到了卡顿,拖不动情况,应是浏览器内部对事件响应速度导致吧. JS代码: ;(function ($,wi ...

  7. 手把手教你做一个原生js拖动滑块【兼容PC和移动端】

    废话少说: 在PC端可以用mousedown来触发一个滑块滑动的效果,但在手机上,貌似无法识别这个事件,但手机上有touchstart事件,可以通过一系列"touch"事件来替代P ...

  8. 手机端js实现滑块推动

    代码编写:(写的格式有点差,凑合看吧,但是功能是实现了的) <html><head><meta http-equiv="Content-Type" c ...

  9. js手机短信按钮倒计时

    /*   120秒手机短信按钮倒计时   */    exports.sendmessage = function (name) {        var second = 120; $(name). ...

随机推荐

  1. Jquery简单学习

    Jquery是一个JavaScript的函数库,Jquery是一个写得少但做的多的轻量级JavaScript库 Jquery用美元$定义. Jquery的action执行对元素的操作 文档就绪函数: ...

  2. 关于HTTPS的简要内容

    HTTPS是什么? 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HT ...

  3. 好代码是管出来的——C#的代码规范

    代码是软件开发过程的产物,代码的作用是通过编译器编译后运行,达到预期的效果(功能.稳定性.安全性等等),而另外一个重要作用是给人阅读.对于机器来说只要代码正确就能够正确的运行程序,但是人不同,如果代码 ...

  4. 教你一招 | 用Python实现简易可拓展的规则引擎

    做这个规则引擎的初衷是用来实现一个可序列号为json,容易拓展的条件执行引擎,用在类似工作流的场景中,最终实现的效果希望是这样的: 简单整理下需求 执行结果最终返回=true= or false 支持 ...

  5. Jar 初步

    前言 jar 是 java 文件中一种文件格式,用于将 .java 文件编译的字节码文件打包成 jar. 给 Java 应用打包 1. 新建一个 java 源文件 package cn.szxy; p ...

  6. Postgresql数据库部署之:Postgresql 存在session 会话不能删除数据库

    SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='数据库名' AND pid<>pg_backen ...

  7. Ubuntu 16.04 安装GIMP绘图软件

    Ubuntu上比较好用的绘图软件,GIMP,安装方法如下: 终端输入 : sudo apt-get install gimp ,回车,输入密码,即可安装简单易行. 输入 :gimp ,启动程序.

  8. 浏览器仿EXCEL表格插件 - 智表ZCELL产品V1.4发布

    智表(zcell)是一款浏览器仿excel表格jquery插件.智表可以为你提供excel般的智能体验,支持双击编辑.设置公式.设置显示小数精度.下拉框.自定义单元格.复制粘贴.不连续选定.合并单元格 ...

  9. mysql中几个日期时间类型之间的区别和使用

    MySQL中有如下几个时间类型:date.time.datetime.timestamp.year MySQL数据类型           含义 date                     只存 ...

  10. (win10 docker desktop) docker build 时 alpine 无法安装软件问题的解决

    使用 alpine 作为 docker 基础镜像时,运行 apk add ..... 遇到如下错误: WARNING: Ignoring http://dl-cdn.alpinelinux.org/a ...