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


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 相关文章推荐
javascript中的__defineGetter__和__defineSetter__介绍
Aug 15 Javascript
jquery ui resize 中border-box的bug修正
Apr 26 Javascript
JS实现当前页居中分页效果的方法
Jun 18 Javascript
javascript常用函数(2)
Nov 05 Javascript
jQuery事件绑定on()与弹窗实现代码
Apr 28 Javascript
JavaScript Promise 用法
Jun 14 Javascript
JS敏感词过滤代码
Dec 23 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 Javascript
vue template中slot-scope/scope的使用方法
Sep 06 Javascript
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
openlayers 3实现车辆轨迹回放
Sep 24 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面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
双击滚屏-常用推荐
2006/11/29 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
YUV转为jpg图像的实现
2019/12/09 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
弘扬职业精神演讲稿
2014/03/20 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
计划生育证明书写要求
2014/09/17 职场文书
机动车登记业务委托书
2014/10/08 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript