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


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 Moblie入门—hello world的示例代码学习
Jan 08 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
Mar 21 Javascript
浅析JavaScript中的CSS属性及命名规范
Nov 28 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
May 18 Javascript
javascript生成不重复的随机数
Jul 17 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
Jul 07 Javascript
canvas实现图像截取功能
Feb 06 Javascript
微信小程序实现单选选项卡切换效果
Jun 19 Javascript
微信用户访问小程序的登录过程详解
Sep 20 Javascript
实用的 vue tags 创建缓存导航的过程实现
Dec 03 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
php 正则表达式小结
2009/08/31 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
php中array_slice和array_splice函数解析
2016/10/18 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
深入理解Node module模块
2018/03/26 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
python网络编程实例简析
2014/09/26 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
python write无法写入文件的解决方法
2019/01/23 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
详解python中*号的用法
2019/10/21 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
中介公司区域经理岗位职责范本
2014/03/02 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
安全教育培训心得体会
2016/01/15 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android