位置: 编程技术 - 正文

基于zepto的移动端轻量级日期插件--date_picker

编辑:rootadmin

推荐整理分享基于zepto的移动端轻量级日期插件--date_picker,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

做过移动Web开发的同学都知道,移动端日期选择是很常见的需求。在PC端,我们有很丰富的选择,比较出名的就有Mobiscroll和jQuery UI Datepicker。个人看来,这些插件存在的两个显而易见的问题,第一是过重的依赖,对于jQuery的插件,已经强制依赖了多k的庞然大物,把很多移动端项目拒之门外;第二是太过强大的功能,很多插件花百分之八十的时间去完善插件百分之二十炫酷的额外功能,导致代码量变大,配置繁杂。所以一款少依赖、轻量级和使用简单的移动端日期选择插件是非常必要的。本文简单介绍近来写的一款基于zepto的移动端轻量级日期插件--date_picker。

插件设计原则

只保留最必要的功能

日期选择插件无非就是可以进行年、月、日选择,并且提供必要的年月切换动画特效,至于什么最小时间、最大时间、主题定制,概不在本插件功能范围。

保留必要的依赖

本插件虽说是基于zepto,实际上还隐性依赖了Github上面一个比较牛的库fastclick。我们知道,移动端点击事件处理有两个常见的问题:(1)移动端click事件有ms,通常采用touch事件来代替click事件来提高灵敏性;(2)touch事件会存在穿透的问题,一般插件都不用touch事件;基于这两个问题,fastclick做了兼容,只需要简单调用它提供的api就能够愉快得和原本一样调用click事件,所以这个依赖不能省。至于依赖zepto,实际上是可有可无的,一来博主平时工作都是写原生js的,不用插件也没多大的感觉,二来插件受众面就会小一些。不过鉴于zepto在移动端已然和zepto在PC端一样如鱼得水,就毫不客气采用了。

既能够支持模块化又能本地引用文件使用的

久远一点的插件基本都是让你下载一个文件,然后用script去引用,这样本无可厚非,只不过放着最大的包管理器npm不用,岂不是对不起页面仔这个称号。所以本插件支持文件引用也支持CMD方式的模块引用。

功能介绍

直接上图:

基于zepto的移动端轻量级日期插件--date_picker

技术细节

transitionEnd事件

插件的主面板是当前月份的天数详情,如果点击上一个月或者下一个月插件需要计算出上一个月或者下一个月的天数信息,然后插入到DOM节点中。在插入到DOM节点之后,就需要采用动画效果来显示最新的一月并且褪去老的一个月,采用的方式是CSS2d转化加过渡。我们需要处理的就是在旧的一个月褪去看不见的时候及时从DOM树中删除,不然如果用户一直点下一个月或者上一个月的话,内存会炸的。为了实现这个移除功能,一个办法是采用setTimeout事件在特定的时间去删除节点,经过尝试,发现由于Javascript定时器不准确的特性和前后一个月切换带来的逻辑复杂度增加,这种方案很不可行。于是,本插件采用了第二个方案:transitionEnd事件。直接引用一下MDN的介绍:

也就是只要你不去随便乱动元素的CSS属性,在动画完成的时候,你就可以执行相应的操作(删除节点)。再来看看兼容性:

对于移动Web开发足矣!

最后就是在绑定事件的兼容性问题,不同厂商对于这个事件的定义并不一致,比如IOS里面监听的是transitionend事件,但是在安卓里面监听transitionend事件完全没反应,经过一番Google,发现安卓需要监听webkitTransitionEnd事件。为了解决绑定事件时候的兼容性问题,就需要检测浏览器到底支持哪种事件。下面贴上Stackoverflow上面一个问答的代码片段:

安装使用

安装

支持下面两种方式

git clone之后直接拷贝引用bin文件夹下面的datepicker.min.css和datepicker.min.js 从npm下载安装:npm install --save date_picker

使用

引用样式datepicker.min.css引用datepicker.min.js或者引用模块var DatePicker = require('date_picker');实例化组件,绑定插件日期选择完成之后的回调函数

插件外置两个API: open和close,其中特别注意上面demo中_date在获取焦点之后里面强制去除了焦点,是为了避免安卓下面为input标签设置readonly属性并不能禁止原生键盘弹出的问题。

jquery实现页面常用的返回顶部效果 本文实例为大家分享了jquery实现返回顶部效果的全部代码,供大家参考,具体内容如下效果图:实现代码:!DOCTYPEhtmlhtmllang="en"headmetacharset="UTF-8"title返回

jQuery实现TAB选项卡切换特效简单演示 本文实例为大家分享jQuery实现TAB选项卡切换特效,供大家参考,具体内容如下1、tab切换on!DOCTYPEhtmlhtmllang="en"headmetacharset="UTF-8"titlejQuerytab切换/titlestyletype

简单的jQuery banner图片轮播实例代码 朋友给我看了一个轮播效果,把js下载一看,丫丫的一个这么简单的效果,这么的就能写个几百行的,严重影响浏览器加载速度嘛,以为人家宽带流量不

标签: 基于zepto的移动端轻量级日期插件--date_picker

本文链接地址:https://www.jiuchutong.com/biancheng/383043.html 转载请保留说明!

上一篇:jquery ajax双击div可直接修改div中的内容

下一篇:jquery实现页面常用的返回顶部效果(jquery 弹出页面)

  • 往年有亏损本年没有亏损
  • 为什么缴纳税
  • 契税计入税金及附加吗
  • 出口退税不退税则征税
  • 利润表季报本月金额是本季度余额吗
  • 交易性金融资产和其他权益工具投资的区别
  • 商业发票和形式发票英文
  • 除了缴纳的税金还有什么
  • 预计负债账务处理 固定资产
  • 计提坏账准备和冲减坏账准备
  • 应收账款计提坏账后收回
  • 费用退回怎么做账
  • 将自建的厂房对外转让需要缴纳增值税吗
  • 一般纳税人17%增值税发票按12%核算如何进行账务处理?
  • 不属于抵扣范围的是什么
  • 印花税的计税依据含增值税吗
  • 核定征收的对象
  • 退税上传,申报怎么操作
  • 五年之内,企业可追补应扣支出
  • 个体户网上报税流程视频
  • 小区业主委员会归哪个部门管
  • 进项票下个月才能到,怎么避免交税
  • 填写报关单需要什么资料
  • 航空公司票价怎么定的
  • 支付给外单位的押金是其他应收款吗
  • 劳务公司差额发票账务处理
  • 电脑屏幕突然黑屏怎么回事
  • 苹果电脑初始化设置
  • 怎么清除更新记录
  • 在建工程进项税可以抵扣吗
  • mac清理垃圾怎么清理
  • 特殊收入应扣减可加计扣除的研发费用政策依据
  • wordpress测试
  • 文竹发黄怎么挽救?
  • 彩石湖公园门票
  • vue使用教程
  • yolo object detection
  • vue前进后退
  • 论文导语如何写
  • ai形成生成器工具怎么用
  • 注册机械加工公司需要什么
  • 固定资金是什么科目
  • 增值税申报表销项税额怎么算?
  • rust基础操作
  • 各人所得税法规定
  • sql 按顺序查询
  • 银行利息支出税率是多少
  • 消费税纳税人的具体纳税期限由主管税务机关
  • 研发费用 汇算清缴
  • 国库集中支付业务包括哪些
  • 开票金额大于收入金额
  • 汽车租赁公司怎么办理
  • 未抵扣进项税额转出会计分录
  • 销项发票导出为什么是乱码
  • mysql字符串类型有哪些
  • 简述mysql的优势
  • macos mysql
  • win7系统摄像头打不开
  • linux安装mailx
  • 系统恢复会怎么样
  • xp系统的启动快捷键
  • winmysqladmin.exe - winmysqladmin进程是什么意思
  • ubuntu系统如何设置永不休眠
  • 双液浆常用配合比
  • perl调用perl脚本
  • node.js编译
  • 飞行歌曲
  • android2d游戏开发
  • js函数详解
  • onkeyup,onkeydown和onkeypress的区别介绍
  • 如何解决eclipse非正常关闭重打开编译代码
  • jquery设计模式
  • public services翻译
  • 使用java
  • 电子发票查询系统手机查询
  • 湖北安徽是一个地方吗
  • 江苏省国税局客服电话
  • 消费税是单一环节征税吗
  • 集体土地征收应该有哪些文件
  • 汕头汕尾什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设