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


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 相关文章推荐
Java Mybatis框架入门基础教程
Sep 21 Javascript
学习JavaScript设计模式(单例模式)
Nov 26 Javascript
Angular实现form自动布局
Jan 28 Javascript
Bootstrap的Refresh Icon也spin起来
Jul 13 Javascript
javascript笔记之匿名函数和闭包
Feb 06 Javascript
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 Javascript
Angular8路由守卫原理和使用方法
Aug 29 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
May 26 Javascript
ES6 Symbol在对象中的作用实例分析
Jun 06 Javascript
Vue中watch、computed、updated三者的区别及用法
Jul 27 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递归算法的详细示例分析
2013/02/19 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python 重定向获取真实url的方法
2018/05/11 Python
Python 面试中 8 个必考问题
2018/11/16 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
Python正则表达式如何匹配中文
2020/05/27 Python
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
校园门卫岗位职责
2013/12/09 职场文书
高一英语教学反思
2014/01/22 职场文书
小学推普周活动总结
2015/05/07 职场文书
如何用python反转图片,视频
2021/04/24 Python
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript