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


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的public、private和privileged模式
Dec 28 Javascript
javascript下4个跨浏览器必备的函数
Mar 07 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
Mar 24 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
May 27 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
Jan 08 Javascript
JS实现的DIV块来回滚动效果示例
Feb 07 Javascript
Node.js中的child_process模块详解
Jun 08 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
如何基于原生javaScript生成带图片的二维码
Nov 21 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
Nov 06 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
PHP的宝库目录--PEAR
2006/10/09 PHP
PHP 常见郁闷问题答解
2006/11/25 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
JavaScript模拟push
2016/03/06 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
python代码制作configure文件示例
2014/07/28 Python
总结python实现父类调用两种方法的不同
2017/01/15 Python
Flask之请求钩子的实现
2018/12/23 Python
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
入股协议书范本
2014/04/14 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
婚内分居协议书范文
2014/11/26 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
Python中for后接else的语法使用
2021/05/18 Python
Python数据分析之绘图和可视化详解
2021/06/02 Python
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技