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


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 相关文章推荐
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
Apr 01 Javascript
关于Javascript 对象(object)的prototype
May 09 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
Javascript中作用域的详细介绍
Oct 06 Javascript
Javascript this 函数深入详解
Dec 13 Javascript
深入理解Node module模块
Mar 26 Javascript
JS求1到任意数之间的所有质数的方法详解
May 20 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 Javascript
JS实现音量控制拖动
Jan 15 Javascript
浅谈javascript事件环微任务和宏任务队列原理
Sep 12 Javascript
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
微信小程序实现点击图片放大预览
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
javascript json 新手入门文档
2009/12/03 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
python实现用户登陆邮件通知的方法
2015/07/09 Python
pandas中Timestamp类用法详解
2017/12/11 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
python 用struct模块解决黏包问题
2020/11/07 Python
css3 transform属性详解
2014/09/30 HTML / CSS
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
国税会议欢迎词
2014/01/16 职场文书
大学生简历求职信
2014/06/24 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
离婚被告答辩状
2015/05/22 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
分享Python异步爬取知乎热榜
2022/04/12 Python
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python