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


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 相关文章推荐
jQuery实现 注册时选择阅读条款 左右移动
Apr 11 Javascript
Javascript基础教程之变量
Jan 18 Javascript
详细解读JavaScript的跨浏览器事件处理
Aug 12 Javascript
bootstrap选项卡使用方法解析
Jan 11 Javascript
Angular实现跨域(搜索框的下拉列表)
Feb 16 Javascript
正则 js分转元带千分符号详解
Mar 08 Javascript
Node.js pipe实现源码解析
Aug 12 Javascript
vue组件发布到npm简单步骤
Nov 30 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
Jan 30 Javascript
如何获取TypeScript的声明文件.d.ts
May 01 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
Jul 03 jQuery
ES6 Promise对象概念及用法实例详解
Oct 15 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
php 正则匹配函数体
2009/08/25 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
JS实现手风琴特效
2020/11/08 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Python深入学习之装饰器
2014/08/31 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
django使用graphql的实例
2020/09/02 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
高中生自我评价个人范文
2013/11/09 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
给校长的一封检讨书
2014/09/20 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python