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


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中 wrap() wrapAll() 与 wrapInner()的差异
Nov 12 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
Dec 08 Javascript
jQuery实现的超简单点赞效果实例分析
Dec 31 Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 Javascript
浅谈jquery的html方法里包含特殊字符的处理
Nov 30 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
JavaScript箭头函数_动力节点Java学院整理
Jun 28 Javascript
Vue2.0结合webuploader实现文件分片上传功能
Mar 09 Javascript
vue 国际化 vue-i18n 双语言 语言包
Jun 07 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
element-ui 中使用upload多文件上传只请求一次接口
Jul 19 Javascript
js实现一款简单踩白块小游戏(曾经很火)
Dec 02 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
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
opencv实现图像几何变换
2021/03/24 Python
工商企业管理实习自我鉴定
2013/12/04 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
鸟的天堂导游词
2015/01/31 职场文书
匿名信格式范文
2015/05/27 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
村主任当选感言
2015/08/01 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL