项目开发中应用的一个小日历功能,写的时候挺复杂但是写出来整理还是觉得挺简单的,整理完以后没有在实际页面中去跑,有问题大家留言或者自己解决(本人样式布局巨好看希望大家喜欢芜湖~)!

html

<view class="ban-all"><view class="date_week"><image class="left" src="../../images/left1.png" bindtap="leftime" style="margin-left: 25rpx;"></image><view class="date">{{year}}年{{month}}月</view><image class="right" src="../../images/right1.png" bindtap="rightime"></image></view><view class="calendar"><view class="calendar-weeks"><view style="color: rgba(234, 128, 87, 1);">日</view><view>一</view><view>二</view><view>三</view><view>四</view><view>五</view><view style="color: rgba(234, 128, 87, 1);">六</view></view><view class="calendar-days"><view wx:for="{{ lineflag?dayf:days }}" class="{{ item.currmonth ? 'currmonth1' : '' }}"><view data-id="{{item.date}}" bindtap="getdaylist" class="{{ item.currmonth ? 'currmonth' : '' }}">{{ item.day }}</view><!-- 小圆点的添加 --><!-- <view wx:if="{{item.show}}" class="one"></view> --></view><view style="width: 670rpx;height: 36rpx;" bindtap="chanline"><image src="{{lineflag?'../../images/morebot.png':'../../images/moretop.png'}}"style="width: 28rpx;height: 36rpx;margin-top: -20rpx;"></image></view></view></view>
</view>

css


Page({/*** 页面的初始数据*/data: {day: [], //日历years: '',lineflag: true},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {this.calendar()this.getDays(this.data.y, this.data.m)},// 传参// 日期加传参calendar() {let now = new Date();let y = now.getFullYear()let m = now.getMonth()this.setData({y,m,})},// 日历getDays(ye, mo) {let that = thislet date = new Date(ye, mo)const y = date.getFullYear()const m = date.getMonth()let curYear = ylet curMonth = m//获取当前月份天数let curDays = new Date(curYear, curMonth + 1, 0).getDate()//获取上个月天数let preDays = new Date(curYear, curMonth, 0).getDate()//这个月第一天星期几let monWeek = new Date(curYear, curMonth, 1).getDay()//这个月最后一天星期几let lastWeek = new Date(curYear, curMonth + 1, 0).getDay()let allDays = []// 上个月let mgo = mlet mmgo = mgo < 10 ? ('0' + mgo) : mgo;for (let i = 0; i < monWeek; i++, preDays--) {let obj = {currmonth: false,day: preDays,date: y + '-' + mmgo + '-' + `${preDays < 10 ? ('0' + preDays) : preDays}`}allDays.unshift(obj)}// 这个月let mone = m + 1let mm = mone < 10 ? ('0' + mone) : mone;for (let i = 1; i <= curDays; i++) {let obj = {currmonth: false,day: i,date: y + '-' + mm + '-' + `${i < 10 ? ('0' + i) : i}`}// if (i == toDay) {//   obj['today'] = true// }allDays.push(obj)}// 下个月let mdo = m + 2let mmdo = mdo < 10 ? ('0' + mdo) : mdo;for (let i = 1; i < 7 - lastWeek; i++) {let obj = {currmonth: false,day: i,date: y + '-' + mmdo + '-' + `${i < 10 ? ('0' + i) : i}`}allDays.push(obj)}that.setData({days: allDays,dayf: allDays.slice(0,14),year: y,month: m + 1,})// 想设置日期下方的小圆点可以在这边循环allDays添加一个控制小圆点的true false,我加的key是show},// 上个月leftime() {this.setData({m: this.data.m - 1})this.getDays(this.data.y, this.data.m)},// 下个月rightime() {this.setData({m: this.data.m + 1})this.getDays(this.data.y, this.data.m)},//获取当天   getdaylist(e) {let that = thisif (that.data.lineflag) {that.data.days.forEach((item, index) => {let b = "days[" + index + "].currmonth"that.setData({[b]: false})})that.data.dayf.forEach((item, index) => {let b = "dayf[" + index + "].currmonth"that.setData({[b]: false})if (item.date == e.currentTarget.dataset.id) {let a = "dayf[" + index + "].currmonth"that.setData({[a]: true,})}})} else {that.data.dayf.forEach((item, index) => {let b = "dayf[" + index + "].currmonth"that.setData({[b]: false})})that.data.days.forEach((item, index) => {let b = "days[" + index + "].currmonth"that.setData({[b]: false})if (item.date == e.currentTarget.dataset.id) {let a = "days[" + index + "].currmonth"that.setData({[a]: true,})}})}},// 改变行数chanline(){this.setData({lineflag:!this.data.lineflag})},/*** 生命周期函数--监听页面隐藏*/onHide() {},/*** 生命周期函数--监听页面卸载*/onUnload() {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh() {},/*** 页面上拉触底事件的处理函数*/onReachBottom() {},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

css

/* pagesStudy/Tobecompleted/Tobecompleted.wxss */
page {background: rgba(249.9, 249.9, 249.9, 1);}.ban-all{width: 670rpx;margin: 20rpx auto;border-radius: 16rpx;background: rgba(255, 255, 255, 1);box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(144, 144, 144, 0.1);}.calendar {width: 670rpx;margin: 20rpx auto;display: flex;flex-flow: column nowrap;}.calendar-weeks {display: flex;flex-flow: row nowrap;justify-content: space-between;align-items: center;}.calendar-weeks view {box-sizing: border-box;width: 14.28%;padding: 5%;display: flex;justify-content: center;font-size: 28rpx;font-weight: 500;color: rgba(53, 59, 80, 1);}.calendar-days {display: flex;flex-flow: row wrap;justify-content: space-between;align-items: center;}.calendar-days view {box-sizing: border-box;width: 14.28%;padding: 4%;display: flex;justify-content: center;font-size: 28rpx;font-weight: 500;}.calendar-days view:not(.currmonth) {color: rgba(21, 35, 46, 1);}.currmonth1 {background: rgba(31, 104, 194, 1);color: rgba(255, 255, 255, 1);border-radius: 25rpx;height: 50rpx;text-align: center;line-height: 5rpx;width: 80%;}.currmonth {color: rgba(255, 255, 255, 1);}.date_week {width: 670rpx;margin: 20rpx auto;height: 86rpx;border-bottom: 1rpx solid rgba(247, 247, 247, 1);display: flex;align-items: center;color: rgba(21, 35, 46, 1);font-size: 32rpx;line-height: 32rpx;}.date_week .date {font-size: 32rpx;font-weight: 600;color: rgba(21, 35, 46, 1);}.right {width: 28rpx;height: 28rpx;}.left {width: 28rpx;height: 28rpx;}/* 小圆点样式 *//* .one {background: rgba(31, 104, 194, 1);width: 8rpx;height: 8rpx;border-radius: 50%;position: relative;top: 54rpx;left: -8rpx;} */

微信小程序日历(下拉、收起、点击、小圆点、月份切换)相关推荐

  1. 安卓小程序 自定义下拉刷新_支付宝小程序设计设计指南

    本篇<设计指南>从7个维度分析: 导航(架构清晰,指引明确).界面(明辨主次,重点明确).流程(流程明确,避免打扰).引导(操作向导,降低成本).反馈(反馈及时,减少焦虑).容错(用户可控 ...

  2. php 类似微信下拉菜单,微信小程序模拟下拉菜单开发实例

    本文主要和大家分享微信小程序模拟下拉菜单开发实例,希望能帮助到大家. 一.知识点 1.实现动态显示和隐藏某个控件 列表1data:{ open:false }, showitem:function() ...

  3. 微信小程序实现下拉刷新

    微信小程序实现下拉刷新 配置json文件 在js文件中写下拉刷新方法 注意 配置json文件 如果需要全局使用下拉刷新就在app.json中设置 如果为单页面使用则在页面json设置即可 " ...

  4. vue uniapp 微信小程序 搜索下拉框 模糊搜索

    vue uniapp 微信小程序 搜索下拉框 模糊搜索 话不多说 直接贴代码 template <template><view class="index"> ...

  5. 微信小程序搜索下拉框排名原理及使用方法「干货」

    自从2017年1月份微信推出小程序以来,小程序的火热程度大家是有目共睹的,从一开始的精确搜索,到后面的模糊搜索,小程序的更新速度远远超过了外界的期待!虽然小程序目前已经有五十几个入口,但是关键词搜索这 ...

  6. 微信小程序 select 下拉框组件

    一.源码地址 GitHub - imxiaoer/WeChatMiniSelect: 微信小程序 select 下拉框组件 二.效果图 录屏图片质量较差,所以大家会看到残影(捂脸) 三.组件源码 1. ...

  7. 小程序picker下拉框选择时间,只需要年和月

    小程序picker下拉框选择时间,只需要年和月 官方提供的组件可以选择到日 我们现需要选择到月,只需要在代码里加上fields="month" <view class=&qu ...

  8. 微信小程序 五 下拉刷新

    微信小程序提供了原声的下拉刷新,三个小点的下拉刷新. 在.json 中写 {"enablePullDownRefresh": true, //开启下拉刷新"backgro ...

  9. 微信小程序界面下拉刷新实现方法

    微信小程序中,通过下拉刷新页面是基本操作,在当前页面排满的情况下继续下拉加载更多内容.小程序和网页都可以实现这一功能,不同的是小程序界面有能实现下拉刷新功能的API,只需从系统调用即可. 通过查看微信 ...

  10. php 类似微信下拉菜单,微信小程序实现下拉框(附代码)

    微信小程序里没有和HTML里的下拉框一样的组件,想要相同的效果只能自己写一个,先看效果 下面来看一下代码: 首先WXML {{selectData[index]}} {{item}} 然后WXSS(如 ...

最新文章

  1. 浅谈批处理获取管理员运行权限的几种方法
  2. python json字符串类型的value换行方案
  3. oracle 韩思捷_Oracle数据库技术服务案例精选
  4. 安装oracle 10g闪退,Windows 7安装Oracle 10g常见错误及解决方法
  5. 微软宣布 Edge 浏览器将切换至 Chromium 内核
  6. 隐藏文件真实下载地址(支持超大文件)源码
  7. web服务端的架构演变
  8. 北方方言的拼音及解释
  9. 微信小程序登陆界面(效果图+源代码)
  10. docker配置mysql文件位置_Docker安装MySQL并挂载数据及配置文件
  11. 为何恒星/太阳(辐射)可以被视为黑体(辐射)?
  12. 04:AD采样【MSP430F5529】
  13. Vue为啥可以成为2019年的一匹黑马?
  14. python有趣小程序 表白-python表白小程序
  15. 中国防静电塑料卷轴市场深度研究分析报告
  16. WPM2026 P沟道增强型MOS场效应晶体管
  17. C语言串的基本操作(assign,compare,concat,index,insert,delete,replace)
  18. crop图片后,同时修改物体相应的坐标
  19. visio 新建个人模板
  20. SOLIDWORKS 2023正版软件安装教程

热门文章

  1. 1 图片的重命名 2 对xml文件的图片来进行画框 3 制作coco数据集
  2. 对糗事百科的搞笑段子的抓取
  3. 京东方GV101WXM-N81-D850镜面LED液晶模组 10.1寸工业液晶屏
  4. c语言课程设计作业求鞍点,求助,最近课设,不会做,求高手帮忙
  5. 欢乐消除开心假日小游戏攻略
  6. php cms 中文,phpcms中文乱码怎么办_CMS系统建站教程
  7. java-后台生成图表、并将图表保存为PNG图片
  8. centos7安装配置nginx
  9. 算法-树-反转二叉树
  10. 《Web前端工程师修炼之道(原书第4版)》——自我测验