自己写了个小程序左滑右滑的特效,可以用来左右切换日历,日历的渲染很简单,参考电脑的日历位置摆放好即可,在此我只写出滑动特效的代码,以供参考。

一、datepicker.wxml的页面结构

<view class="container"><view class="layout_header">左右滑动页面试一下效果</view><view class="layout_body"><!-- 这里用 bindtouchstart 和 bindtouchend 两个事件来控制滑动的 --><view class="date_container" bindtouchstart="touchStart" bindtouchend="touchEnd"><view class="date_box1 {{slideOne}}">{{currentDate}}</view><view class="date_box2 {{slideTwo}}">{{currentDate}}</view></view></view>
</view>

二、datepicker.wxss的样式

/* 例子的样式 */
.container {font-size: 28rpx;background: #f8f8f9;height: 100%;min-height: 100%;
}.layout_header {padding: 20rpx 20rpx;margin: 30rpx;background: #fff;box-shadow: 0px 0px 10rpx #e9eaec;border-radius: 8rpx;text-align: center;
}.layout_body {padding: 30rpx;
}/* 日期样式 */
.layout_body .date_container {background: #fff;box-shadow: 0px 0px 10rpx #e9eaec;border-radius: 8rpx;text-align: center;position: relative;height: 520rpx;line-height: 520rpx;font-size: 32rpx;font-weight: bold;overflow: hidden;
}.layout_body .date_container .date_box2 {position: absolute;top: 0;right: 0;left: 0;bottom: 0;opacity: 0;
}/* 滑动的动画 */
.animated {-webkit-animation-duration: 2s;animation-duration: 2s;-webkit-animation-fill-mode: both;animation-fill-mode: both;
}@-webkit-keyframes fadeOutLeft {from {opacity: 1;}to {opacity: 0;-webkit-transform: translate3d(-100%, 0, 0);transform: translate3d(-100%, 0, 0);}
}@keyframes fadeOutLeft {from {opacity: 1;}to {opacity: 0;-webkit-transform: translate3d(-100%, 0, 0);transform: translate3d(-100%, 0, 0);}
}.fadeOutLeft {-webkit-animation-name: fadeOutLeft;animation-name: fadeOutLeft;
}@-webkit-keyframes fadeOutRight {from {opacity: 1;}to {opacity: 0;-webkit-transform: translate3d(100%, 0, 0);transform: translate3d(100%, 0, 0);}
}@keyframes fadeOutRight {from {opacity: 1;}to {opacity: 0;-webkit-transform: translate3d(100%, 0, 0);transform: translate3d(100%, 0, 0);}
}.fadeOutRight {-webkit-animation-name: fadeOutRight;animation-name: fadeOutRight;
}

三、datepicker.js的写法

// 自定义工具函数
var utils = {digit: function (n) {if (n == null || n === "" || n == undefined) {return "";} else {n = n.toString();return n[1] ? n : '0' + n;}},formatDate: function (date = new Date()) {// 年月日var year = date.getFullYear()var month = date.getMonth() + 1var day = date.getDate()// 返回值return [year, this.digit(month), this.digit(day)].map(this.digit).join('-');}
}// Page
Page({data: {// 左右滑动的class样式slideOne: "",slideTwo: "",// 左右滑动定义的状态变量slideFlag: false,// 页面输出的数据currentDate: utils.formatDate(),},onLoad: function () {},/*** 日历滑动的特效处理函数*/touchStart(e) {this.setData({startX: e.changedTouches[0].pageX})},touchEnd(e) {if (!this.data.slideFlag) {this.setData({slideFlag: true,endX: e.changedTouches[0].pageX})let disX = e.changedTouches[0].pageX - this.data.startX;if (disX < -60) {console.log("左滑")this.setData({slideOne: "animated fadeOutLeft",slideTwo: "animated fadeInRight"})setTimeout(() => {this.tapNext();}, 300);setTimeout(() => {this.setData({slideFlag: false,slideOne: "",slideTwo: ""})}, 800);} else if (disX > 60) {console.log("右滑")this.setData({slideOne: "animated fadeOutRight",slideTwo: "animated fadeInLeft"})setTimeout(() => {this.tapPrev();}, 300);setTimeout(() => {this.setData({slideFlag: false,slideOne: "",slideTwo: ""})}, 800);} else {this.setData({slideFlag: false})}}},/*** 左右滑动调用的函数*/tapPrev() {let date = new Date(this.data.currentDate);date.setMonth(date.getMonth() - 1);this.setData({currentDate: utils.formatDate(date)})},tapNext() {let date = new Date(this.data.currentDate);date.setMonth(date.getMonth() + 1);this.setData({currentDate: utils.formatDate(date)})}
})

以上粘贴到小程序对应的文件里,可以运行起来,最后附一张gif动态图看一下展示效果

微信小程序日历左滑右滑特效相关推荐

  1. php微信小程序向下滑动,微信小程序功能实现:上滑加载下拉刷新

    本篇文章给大家带来的内容是关于微信小程序功能实现:上滑加载下拉刷新,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 之前谈到文章列表的数据加载,是一次性全部加载,这样是不友好的.这章介 ...

  2. 微信小程序 - 实现左滑动删除功能

    微信小程序 - 实现左滑动删除功能 效果图: 实现过程: 一.wxml布局 这里我是先用了一个大盒子包裹小盒子,然后小盒子里面进行左右布局(左边为内容部分,右边为删除按钮)的方式实现的 <vie ...

  3. 适配mpvue平台的的微信小程序日历组件mpvue-calendar

    mpvue-calendar 基于vue-calendar的适配mpvue平台的的微信小程序日历组件 预览 安装 npm i mpvue-calendar 使用 import Calendar fro ...

  4. 微信小程序居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局

    微信小程序居中.居右.横纵布局 1.水平垂直居中(相对父类控件) 方式一:水平垂直居中 父类控件: display: flex;align-items: center;//子控件垂直居中justify ...

  5. 手把手教你写一个微信小程序日历组件

    今天我们一起写一个微信小程序日历组件 微信小程序日历组件 github.com/749264345/w- 好,我们先看一下要实现的模样,如下图 由以上截图我们可以看到 1.日历可以通过按钮[切换展示效 ...

  6. python日历小程序_微信小程序日历效果

    本文实例为大家分享了微信小程序日历效果的具体代码,供大家参考,具体内容如下 源码下载地址 项目需要一个日历功能,花了一天时间实现的微信小程序日历,js大小只有几k,引入了bootstrap字体图标(文 ...

  7. 微信小程序日历加课表项目

    最近花了不少时间做了个微信小程序,期间遇到了挺多技术问题的,写个博客记录一下,我先上小程序使用图片! 1.进入小程序首先要登录才能添加行程和查看行程 2.登录成功后 3.首页日历日期是可点击,点击后是 ...

  8. 微信小程序日历签到组件(原创)

    微信小程序日历签到组件(原创) 开发原因: 为满足定制需要,市面上又找不到车子和轮子,干脆自己撸了并开源分享有需要的人用 其他说明: 该组件js日期均已使用yyyy/MM/dd格式连接解决ios不兼容 ...

  9. 微信小程序日历(公历)

    微信小程序日历(公历) 周六加班的时候,突然想看看日历是怎么实现的,就试着写了一下. --------------------------分割线-------------------------- J ...

最新文章

  1. UI设计培训分享:ui设计师如何培养设计思维?
  2. 计算机网络:第五章 传输层
  3. OpenCASCADE:Modeling Data之拓扑
  4. 阿里云CentOS6.3 安装MongoDB教程
  5. xd使用技巧_魔兽世界怀旧服老玩家才会的治疗技巧,这四个技能需要看时机选择...
  6. 双截止阀(DBB)行业调研报告 - 市场现状分析与发展前景预测
  7. 广度优先搜索c语言矩阵,算法7-6:图的遍历——广度优先搜索 (C++代码)
  8. GB35114---SM3withSM2证书生成及读取(一)
  9. linux服务器怎么安装360杀毒软件,360主机卫士Linux版使用安装教程
  10. 奇迹MU服务端架设教程技术分享探究_奇迹架设技术_奇迹SF套装
  11. CSS单行文本溢出显示省略号(…)
  12. matlab函数之saveas 和imwrite
  13. Vue项目-2首页开发(header)
  14. 计算机软件 如何评正高职称,正高职称评审条件
  15. 第一个STM8项目的记录
  16. STM32F103C8T6引脚图
  17. 使用OAS Validator帮助你规范OpenAPI Spec文档
  18. 为什么好多公司的开发语言从C#变成了Java?
  19. 画板(DrawBoard)
  20. 【ubuntu】Ubuntu中Android NDK下载跟配置

热门文章

  1. 服务器ftp连接成功不显示文件,ftp服务器不显示文件
  2. 100个Java项目解析,带源代码和学习文档!
  3. android 仿qq换肤功能,Android插件化的思考——仿QQ一键换肤,思考比实现更重要!.doc...
  4. Spring 学习总结笔记【七、AOP面向切面编程】
  5. Idea全局替换@RequestMapping
  6. Ubuntu系统 安装与配置 常见异常与解决办法
  7. IDEA 设置文件编码
  8. java中向上转型和向下转型浅析
  9. 【转载】腾讯网无障碍说明
  10. http://aspn.activestate.com/ASPN/Mail/Browse/Threaded/exslt