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


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 相关文章推荐
Prototype 学习 Prototype对象
Jul 12 Javascript
利用javascript/jquery对上传文件格式过滤的方法
Jul 25 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 Javascript
jQuery调用ajax请求的常见方法汇总
Mar 24 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
Nov 25 Javascript
Javascript打印局部页面实例
Jun 21 Javascript
详解支持Angular 2的表格控件
Jan 19 Javascript
jquery精度计算代码 jquery指定精确小数位
Feb 06 Javascript
JS+HTML5 FileReader对象用法示例
Apr 07 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
May 22 Javascript
关于element-ui表单中限制输入纯数字的解决方式
Sep 08 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 empty 函数判断结果为空但实际值却为非空的原因解析
2018/05/28 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
vue中的scope使用详解
2017/10/29 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
python模块常用用法实例详解
2019/10/17 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
求职信范文英文版
2014/01/05 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
学校运动会报道稿
2014/09/23 职场文书
实习单位意见
2015/06/04 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
Redis 异步机制
2022/05/15 Redis