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


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 相关文章推荐
JavaScript setTimeout和setInterval的使用方法 说明
Mar 25 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
Jun 28 Javascript
js 第二代身份证号码的验证机制代码
May 12 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
Sep 21 Javascript
Javascript快速排序算法详解
Dec 03 Javascript
javascript实现的多个层切换效果通用函数实例
Jul 06 Javascript
拥有一个属于自己的javascript表单验证插件
Mar 24 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 Javascript
详解jQuery选择器
Dec 21 Javascript
VUE项目中加载已保存的笔记实例方法
Sep 14 Javascript
Vue的click事件防抖和节流处理详解
Nov 13 Javascript
JS数组方法join()用法实例分析
Jan 18 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常用函数汇总
2014/12/17 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
python在指定目录下查找gif文件的方法
2015/05/04 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
vscode 远程调试python的方法
2017/12/01 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
python 生成器需注意的小问题
2020/09/29 Python
英语感恩演讲稿
2014/01/14 职场文书
夏季奶茶店创业计划书
2014/01/16 职场文书
社区中秋节活动方案
2014/01/29 职场文书
品质口号大全
2014/06/17 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书