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


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 相关文章推荐
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
Jun 03 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
jQuery数据缓存用法分析
Feb 20 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
jQuery中的each()详细介绍(推荐)
May 25 Javascript
Angular 应用技巧总结
Sep 14 Javascript
详解vue-cli开发环境跨域问题解决方案
Jun 06 Javascript
vue中锚点的三种方法
Jul 06 Javascript
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
Apr 30 Javascript
d3.js实现图形缩放平移
Dec 19 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
桌面中心(三)修改数据库
2006/10/09 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
一段实用的php验证码函数
2016/05/19 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
python取代netcat过程分析
2018/02/10 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python用input输入列表的实例代码
2020/02/07 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
Python持续监听文件变化代码实例
2020/07/22 Python
python中的yield from语法快速学习
2020/11/06 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
初中高效课堂实施方案
2014/02/26 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
家长高考寄语
2015/02/27 职场文书
撤诉申请怎么写
2015/05/19 职场文书
党内外群众意见范文
2015/06/02 职场文书