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


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 相关文章推荐
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
Oct 17 Javascript
css配合jquery美化 select
Nov 29 Javascript
js实现屏幕自适应局部代码分享
Jan 30 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
jQuery插件datatables使用教程
Apr 21 Javascript
基于jquery实现智能表单验证操作
May 09 Javascript
使用JS中的exec()方法构造正则表达式验证
Aug 01 Javascript
前端构建工具之gulp的配置与搭建详解
Jun 12 Javascript
vue 移动端记录页面浏览位置的方法
Mar 11 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
Jul 17 Javascript
js实现跳一跳小游戏
Jul 31 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
destoon各类调用汇总
2014/06/20 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
javascript self对象使用详解
2016/10/18 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
python处理csv数据的方法
2015/03/11 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
python数字类型math库原理解析
2020/03/02 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
创业计划书撰写原则
2014/01/25 职场文书
出纳担保书范文
2014/04/02 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
初中生毕业评语
2014/12/29 职场文书
网络营销计划书
2015/01/17 职场文书
红歌会主持词
2015/07/02 职场文书
婚宴父亲致辞
2015/07/27 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript