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


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 相关文章推荐
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
Sep 07 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
Nov 02 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
Sep 02 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
Jun 23 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
Sep 06 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
Oct 15 Javascript
Bootstrap CSS布局之表单
Dec 17 Javascript
vue router使用query和params传参的使用和区别
Nov 13 Javascript
详解如何使用 vue-cli 开发多页应用
Dec 16 Javascript
React Native使用fetch实现图片上传的示例代码
Mar 07 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
Mar 28 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中的观察者模式
2010/03/24 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
javascript数据类型详解
2017/02/07 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
Python获取linux主机ip的简单实现方法
2016/04/18 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
Django接收自定义http header过程详解
2019/08/23 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
python标准库OS模块详解
2020/03/10 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
python 简单的调用有道翻译
2020/11/25 Python
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
个人委托书怎么写
2014/04/04 职场文书
个人授权委托书
2014/09/15 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
个人求职意向书
2015/05/11 职场文书
复活读书笔记
2015/06/29 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫