小程序实现日历左右滑动效果


Posted in Javascript onOctober 21, 2019

本文实例为大家分享了小程序日历左右滑动效果的具体代码,供大家参考,具体内容如下

效果图

小程序实现日历左右滑动效果

小程序实现日历左右滑动效果

小程序实现日历左右滑动效果

wxml

<scroll-view class="scroll-view" scroll-left="{{scrollLeftIndex*itemWidth}}" scroll-x scroll-with-animation>
 <view class='item' style='width:{{itemWidth}}px' wx:for="{{dateList}}" data-index='{{index}}' bindtap='clickDate'>
 <view class='text-view'>
 <view class='day {{index==clickIndex?"day-active":""}}'>{{item.day}}</view>
 <text class='month'>{{item.month}}月</text>
 <view wx:if="{{item.month == sysmonth && item.day == nowDate}}">
 <text class='week'>今日</text>
 </view>
 <view wx:else>
 <text class='week'>{{item.week}}</text>
 </view>
 </view>
 </view>
</scroll-view>

js

// byjs_sun/pages/product/all/all.js
Page({
 
 /**
 * 页面的初始数据
 */
 data: {
 dateList:[], //存放日期的数组
 nowDate:'', //系统当前日期
 },
 // 格式化日期,时间
 formatTime(date) {
 const year = date.getFullYear()
 const month = date.getMonth() + 1
 const day = date.getDate()
 const hour = date.getHours()
 const minute = date.getMinutes()
 const second = date.getSeconds()
 return [year, month, day].map(this.formatNumber).join('/') + ' ' + [hour, minute, second].map(this.formatNumber).join(':')
 },
 // 格式化数字
 formatNumber(n) {
 n = n.toString()
 return n[1] ? n : '0' + n
 },
 
 // 获取日期详情
 getDateInfo(ts) {
 const date = new Date(ts);
 const weekArr = new Array("日", "一", "二", "三", "四", "五", "六");
 const week = date.getDay();
 let dateString = this.formatTime(date);
 let shortDateString = dateString.replace(/\//g, '-').substring(5, 10).replace(/-/g, '月') + "日";
 if (date.getDate() < 10) {
 shortDateString = shortDateString.replace(/0/g, '');
 }
 return {
 shortDateString,
 dateString,
 month: date.getMonth() + 1,
 day: date.getDate(),
 week: weekArr[week]
 }
 },
 
/**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {
 var that = this;
 var myDate = new Date(); //获取系统当前时间
 var sysmonth = myDate.getMonth() + 1
 var nowDate = myDate.getDate(); //当前是本月几日
 var today = myDate.toLocaleDateString(); //今日年月日
 that.setData({
 nowDate: nowDate,
 sysmonth: sysmonth
 }),
 console.log('系统日期:',myDate);
 console.log('系统日期(年/月/日):',today);
 console.log('系统日期(月):', sysmonth);
 console.log('系统日期(日):', nowDate);
 
 // 获取屏幕宽度,设置每个日期宽度
 wx.getSystemInfo({
 success: (res) => {
 console.log(res);
 this.setData({
 windowWidth: res.windowWidth,
 itemWidth: parseInt(res.windowWidth / 7)
 });
 },
 })
 this.initData();
 },
 
 // 初始化日期
 initData() {
 const nowDateTime = +new Date();
 let dateList = [];
 for (let i = -30; i < 30; i++) {
 let obj = this.getDateInfo(nowDateTime + i * 24 * 60 * 60 * 1000);
 obj.isChoose = i == 0;
 dateList.push(obj);
 }
 this.setData({
 dateList,
 clickIndex: 30,
 scrollLeftIndex: 30
 
 });
 },
 
 // 点击日期方法
 clickDate(e) {
 var that = this;
 console.log('点击日期携带的下标:', e.currentTarget.dataset.index); //当前的点击的日期
 var index = e.currentTarget.dataset.index;
 that.setData({
 clickIndex: index
 });
 // console.log(that.data.scrollLeftIndex);
 console.log('当前点击日期:',that.data.dateList[index].shortDateString); //当前点击的日期
 
 // const {
 // index
 // } = e.currentTarget.dataset;
 // this.setData({
 // clickIndex: index
 // });
 // console.log(this.data.dateList[index]);
 },
})

样式

.scroll-view {
 height: 200rpx;
 background-color: #313751;
 width: 100%;
 white-space: nowrap;
}
.item {
 height: 200rpx;
 display: inline-block;
}
.text-view {
 display: flex;
 align-items: center;
 justify-content: center;
 flex-direction: column;
 width: 100%;
 height: 100%;
 color: #fff;
}
.month {
 font-size: 30rpx;
 margin-top: 10rpx;
}
.week {
 font-size: 32rpx;
 margin-top: 10rpx;
}
.day {
 font-size: 32rpx;
 width: 60rpx;
 height: 60rpx;
 border-radius: 10rpx;
 text-align: center;
 line-height: 60rpx;
 margin-top: 20rpx;
}
/* 日期选中的样式 */
.day-active {
 background-color: #FFB400;
 color: #fff;
}

更多教程点击《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
推荐40个非常优秀的jQuery插件和教程【系列三】
Nov 09 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
Jun 03 Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
Feb 23 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 Javascript
使用angularjs.foreach时return的问题解决
Sep 30 Javascript
JointJS流程图的绘制方法
Dec 03 Javascript
vue-for循环嵌套操作示例
Jan 28 Javascript
利用vue重构有赞商城的思路以及总结整理
Feb 21 Javascript
深入理解JavaScript 箭头函数
May 30 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
Dec 20 Javascript
js中!和!!的区别与用法
May 09 Javascript
微信小程序可滑动月日历组件使用详解
Oct 21 #Javascript
微信小程序可滑动周日历组件使用详解
Oct 21 #Javascript
小程序实现横向滑动日历效果
Oct 21 #Javascript
微信小程序实现点击图片放大预览
Oct 21 #Javascript
vue实现Input输入框模糊查询方法
Jan 29 #Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 #Javascript
vue项目中常见问题及解决方案(推荐)
Oct 21 #Javascript
You might like
PHP中的float类型使用说明
2010/07/27 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
土木工程毕业生推荐信
2013/10/28 职场文书
最新党员的自我评价分享
2013/11/04 职场文书
公司培训心得体会
2014/01/03 职场文书
幼儿园课题方案
2014/06/09 职场文书
仓库管理制度范本
2015/08/04 职场文书
爱护环境建议书
2015/09/14 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python