小程序实现横向滑动日历效果


Posted in Javascript onOctober 21, 2019

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

<scroll-view class="scroll-view_H" scroll-x>
 <view class='list' style='width:{{ width }}rpx'>
  <view bindtap="select" wx:for="{{ calendar }}" wx:key="" wx:for-item="item" wx:for-index="index" data-index="{{ index }}" class='listItem {{index==currentIndex? "current":""}}'>
  <text class='name'>{{ item.week }}</text>
  <text class='date'>{{ item.date }}</text>
  </view>
 </view>
</scroll-view>

js: 

function getThisMonthDays(year, month) {
  return new Date(year, month, 0).getDate();
 }
 // 计算每月第一天是星期几
 function getFirstDayOfWeek(year, month) {
  return new Date(Date.UTC(year, month - 1, 1)).getDay();
 }
 const date = new Date();
 const cur_year = date.getFullYear();
 const cur_month = date.getMonth() + 1;
 const cur_date = date.getDate();
 const weeks_ch = ['日', '一', '二', '三', '四', '五', '六'];
 //利用构造函数创建对象
 function calendar(date, week) {
  this.date = cur_year + '-' + cur_month + '-' + date;
  if (date == cur_date) {
  this.week = "今天";
  } else if (date == cur_date + 1) {
  this.week = "明天";
  } else {
  this.week = '星期' + week;
  }
 }
 //当前月份的天数
 var monthLength = getThisMonthDays(cur_year, cur_month)
 //当前月份的第一天是星期几
 var week = getFirstDayOfWeek(cur_year, cur_month)
 var x = week;
 for (var i = 1; i <= monthLength; i++) {
  //当循环完一周后,初始化再次循环
  if (x > 6) {
  x = 0;
  }
  //利用构造函数创建对象
  that.data.calendar[i] = new calendar(i, [weeks_ch[x]][0])
  x++;
 }
 //限制要渲染的日历数据天数为7天以内(用户体验)
 var flag = that.data.calendar.splice(cur_date, that.data.calendar.length - cur_date <= 7 ? that.data.calendar.length : 7)
 that.setData({
  calendar: flag
 })
 selectd = flag;
 // console.log(selectd);
 var ret_id = [];
 const lengths = selectd.length
 for (let i = 0; i < lengths; i++) {
  ret_id[i] = selectd[i].date;
 }
 choosedate = ret_id[0];
 //设置scroll-view的子容器的宽度
 that.setData({
  width: 186 * parseInt(that.data.calendar.length - cur_date <= 7 ? that.data.calendar.length : 7)
 })

CSS:

/*日历开始 */
scroll-view{
 height: 128rpx;
 width: 101%;
 position:fixed;
 top:355rpx;
 
}
scroll-view .list{
 display: flex;
 flex-wrap: nowrap;
 justify-content: flex-start;
}
scroll-view .listItem{
 text-align: center;
 width:187rpx;
 height: 128rpx;
 background: #f4f4f4;
 padding-top: 30rpx;
 box-sizing: border-box;
 display: inline-block;
}
scroll-view .listItem text{
 display: block;
}
scroll-view .listItem .name{
 font-size: 25rpx;
}
scroll-view .listItem .date{
 font-size: 25rpx;
}
scroll-view .current{
 background-color:pink;
  width:200rpx;
 position:relative;
}
scroll-view .current text{
 color: #fff;
}

更多精彩的日历效果请学习参考专题:javascript日历插件

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

Javascript 相关文章推荐
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
JavaScript Scoping and Hoisting 翻译
Jul 03 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
Aug 17 Javascript
javascript制作sql转换为stringBuffer的小工具
Apr 03 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
Jun 05 Javascript
介绍JavaScript的一个微型模版
Jun 24 Javascript
浅谈JavaScript字符串拼接
Jun 25 Javascript
JS中对象与字符串的互相转换详解
May 20 Javascript
js实现省份下拉菜单效果
Feb 15 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
Bootstrap Table使用整理(三)
Jun 09 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
Jun 21 Javascript
微信小程序实现点击图片放大预览
Oct 21 #Javascript
vue实现Input输入框模糊查询方法
Jan 29 #Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 #Javascript
vue项目中常见问题及解决方案(推荐)
Oct 21 #Javascript
vue.js实现左边导航切换右边内容
Oct 21 #Javascript
vue+element树组件 实现树懒加载的过程详解
Oct 21 #Javascript
JavaScript函数IIFE使用详解
Oct 21 #Javascript
You might like
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
如何使用php输出时间格式
2013/08/31 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
简单谈谈python中的多进程
2016/11/06 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
如何转换一个字符串到enum值
2014/04/12 面试题
生物科学专业自荐书
2014/06/20 职场文书
药剂专业自荐书
2014/06/20 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫