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


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 相关文章推荐
禁止F5等快捷键的JS代码
Mar 06 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 Javascript
JavaScript检测实例属性, 原型属性
Feb 04 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
Jan 24 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
利用jQuery实现打字机字幕效果实例代码
Sep 02 Javascript
javascript实现文字无缝滚动
Dec 27 Javascript
解析vue中的$mount
Dec 21 Javascript
Vue2.0 http请求以及loading展示实例
Mar 06 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
JS实现前端页面的搜索功能
Jun 12 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详解ASCII码对照表与字符转换
2011/12/05 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
Python读取Excel的方法实例分析
2015/07/11 Python
python简单实现操作Mysql数据库
2018/01/29 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
Android interview questions
2016/12/25 面试题
2013的个人自我评价
2013/12/26 职场文书
开业庆典策划方案
2014/02/18 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
2015年除四害工作总结
2015/07/23 职场文书
珍爱生命主题班会
2015/08/13 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android