js實現(xiàn)簽到日歷
更新時間:2022年08月29日 08:36:26 作者:向陽而生,靜待余生
這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)簽到日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了js實現(xiàn)簽到日歷的具體代碼,供大家參考,具體內(nèi)容如下
wxml代碼
<view class="boxMain" style="height:{{dateList.length>35?'805rpx':'730rpx'}}"> ? ? <view class="calendarHeader"> ? ? ? ? <view>本月已簽到<text>{{recordList.length}}</text>天</view> ? ? </view> ? ? <view class="calendarChange"> ? ? ? ? <view class="calendarChangeLeftRight" catchtap="initDateList" data-month="{{chooseMonth-1}}"> ? ? ? ? ? ? <image mode="widthFix" src="{{static}}left_arrow.png"></image> ? ? ? ? </view> ? ? ? ? ? ? ? ? ? ? ? ? <text>{{chooseYear}}年{{chooseMonth+1}}月</text> ? ? ? ? <view class="calendarChangeLeftRight" catchtap="initDateList" data-month="{{chooseMonth+1}}"> ? ? ? ? ? ? <image mode="widthFix" src="{{static}}right_arrow.png"></image> ? ? ? ? </view> ? ? </view> ? ? <view class="calendarContent"> ? ? ? ? <view class="calendarWeek"> ? ? ? ? ? ? <text>日</text> ? ? ? ? ? ? <text>一</text> ? ? ? ? ? ? <text>二</text> ? ? ? ? ? ? <text>三</text> ? ? ? ? ? ? <text>四</text> ? ? ? ? ? ? <text>五</text> ? ? ? ? ? ? <text>六</text> ? ? ? ? </view> ? ? ? ? <view class="calendarDays"> ? ? ? ? ? ? <view wx:for="{{dateList}}" wx:key="index" wx:for-item="dateItem"> ? ? ? ? ? ? ? ? <view style="color:{{dateItem.type=='current'?'#ffffff':(dateItem.type=='before'?'#979797':(dateItem.type=='selected'?'#FE7458':''))}};background-color:{{ dateItem.type=='current'?'#FE7458':(dateItem.type=='before'?'#F8F8FA':(dateItem.type=='selected'?'#ffdcd5':'')) }}"> ? ? ? ? ? ? ? ? ? ? {{dateItem.day}} ? ? ? ? ? ? ? ? </view> ? ? ? ? ? ? ? ? ? </view> ? ? ? ? </view> ? ? </view> </view>
js代碼:
const app = getApp() const http = require('../../config/api.js'); Page({ ? data: { ? ? static: app.data.static, ? ? recordList: [], ? ? totalReward: {}, ? ? dateList: [], ? ? chooseYear: new Date().getFullYear(), ? ? chooseMonth: new Date().getMonth(), ? ? currentDay: new Date().getDate(), ? ? dayNumsByMonth: null ? }, ? onLoad() { ? ? this.initDateList(); //初始化日歷 ? }, ? initDateList: function (e) { ? ? let that = this; ? ? ? let chooseMonth = that.data.chooseMonth; ? ? let chooseYear = that.data.chooseYear; ? ? ? let currentDate = new Date(); ? ? let currentYear = currentDate.getFullYear(); ? ? let currentMonth = currentDate.getMonth(); ? ? ? if (e) { ? ? ? chooseMonth = e.currentTarget.dataset.month; ? ? ? if (chooseMonth >= 12) { ? ? ? ? chooseMonth = chooseMonth - 12; ? ? ? ? chooseYear = chooseYear + 1; ? ? ? } else if (chooseMonth < 0) { ? ? ? ? chooseMonth = chooseMonth + 12; ? ? ? ? chooseYear = chooseYear - 1; ? ? ? } else { ? ? ? ? chooseMonth = chooseMonth; ? ? ? } ? ? ? let monthCount = (currentYear - chooseYear) * 12 + currentMonth - chooseMonth; ? ? ? if (monthCount > 0 && Math.abs(monthCount) > 6) { ? ? ? ? wx.showToast({ ? ? ? ? ? title: '往前最多查看六個月', ? ? ? ? ? icon: 'none', ? ? ? ? ? duration: 1500 ? ? ? ? }) ? ? ? ? ? return ? ? ? } else if (monthCount < 0 && Math.abs(monthCount) > 1) { ? ? ? ? wx.showToast({ ? ? ? ? ? title: '往后最多查看一個月', ? ? ? ? ? icon: 'none', ? ? ? ? ? duration: 1500 ? ? ? ? }) ? ? ? ? return ? ? ? } ? ? } ? ? ? that.setData({ ? ? ? chooseMonth: chooseMonth, ? ? ? chooseYear: chooseYear ? ? }) ? ? var dateList = []; ? ? ? let firstDayWeek = new Date(that.data.chooseYear, that.data.chooseMonth, 1).getDay(); ? ? let dayNumsByMonth = new Date(that.data.chooseYear, that.data.chooseMonth + 1, 0).getDate(); ? ? that.setData({ ? ? ? dayNumsByMonth: dayNumsByMonth ? ? }) ? ? ? for (let i = 0; i < 43; i++) { ? ? ? let day = i - firstDayWeek + 1; ? ? ? if (day > dayNumsByMonth && (i == 35 || i == 42)) { ? ? ? ? that.setData({ ? ? ? ? ? dateList: dateList ? ? ? ? }); ? ? ? ? return ? ? ? } ? ? ? dateList.push({ ? ? ? ? 'year': '', ? ? ? ? 'month': '', ? ? ? ? 'day': '', ? ? ? ? 'type': '', ? ? ? }) ? ? ? ? if (day > 0 && day <= dayNumsByMonth) { ? ? ? ? dateList[i].year = that.data.chooseYear; ? ? ? ? dateList[i].month = that.isTen(that.data.chooseMonth + 1); ? ? ? ? dateList[i].day = that.isTen(day); ? ? ? ? if (that.data.chooseYear == currentYear && that.data.chooseMonth == currentMonth) { ? ? ? ? ? ? if (day < that.data.currentDay) { ? ? ? ? ? ? dateList[i].type = 'before'; ? ? ? ? ? } else if (day > that.data.currentDay) { ? ? ? ? ? ? dateList[i].type = 'after'; ? ? ? ? ? } else { ? ? ? ? ? ? dateList[i].type = 'current' ? ? ? ? ? } ? ? ? ? ?? ? ? ? ? } else if (that.data.chooseYear < currentYear || (that.data.chooseYear == currentYear && that.data.chooseMonth < currentMonth)) { ? ? ? ? ? dateList[i].type = 'before'; ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? dateList[i].type = 'after'; ? ? ? ? } ? ? ? } ? ? } ? }, ? isTen: function (v) { ? ? return v >= 10 ? v : `0${v}` ? } });
wxss代碼
.boxMain { ? background-color: #fff; ? margin: 36rpx 30rpx 22rpx 30rpx; ? border-radius: 10rpx; ? padding: 0 20rpx; ? display: flex; ? flex-direction: column; } ? .boxMain .calendarHeader { ? display: flex; ? justify-content: space-between; ? color: #333333; ? font-size: 28rpx; ? margin-top: 40rpx; ? padding: 0 4rpx; } ? .boxMain .calendarHeader view text { ? color: #FE7458; ? padding: 0 6rpx; } ? .boxMain .calendarHeader view:last-child { ? font-size: 24rpx; } ? .boxMain .calendarChange { ? display: flex; ? padding: 0 50rpx; ? align-items: center; ? justify-content: space-between; ? background-color: #F8F8FA; ? border-radius: 25rpx; ? height: 50rpx; ? line-height: 50rpx; ? font-size: 24rpx; ? text-align: center; ? margin: 25rpx 0; } .boxMain .calendarChange .calendarChangeLeftRight{ ? width: 50rpx; ? height: 50rpx; ? display: flex; ? flex-direction: column; ? justify-content: center; } .boxMain .calendarChange image{ ? width: 12rpx; ? margin: 0 auto; } .boxMain .calendarContent .calendarWeek{ ? font-size: 26rpx; ? display: flex; ? ? ? justify-content: space-between; } .boxMain .calendarContent .calendarWeek text{ ? width: 14%; ? height: 40rpx; ? text-align: center; } .boxMain .calendarContent .calendarDays{ ? font-size: 26rpx; ? display: flex; ? justify-content: space-between; ? flex-wrap:wrap; ? align-items: center; ? margin-top: 47rpx; } .boxMain .calendarContent .calendarDays>view{ ? width: 14%; ? text-align: center; ? display: block; ? ? ? margin-bottom: 32rpx; ? height: 46rpx; ? line-height: 46rpx; } .boxMain .calendarContent .calendarDays>view>view{ ? width: 46rpx; ? height: 46rpx; ? margin: 0 auto; ? border-radius: 50%; } .boxMain .calendarContent .calendarDays .box{ ? margin-top: -10rpx; } .boxMain .calendarContent .calendarDays .box image{ ? width: 42rpx; } .boxMain .calendarContent .calendarDays .box text{ ? float: left; ? margin-top: -20rpx; ? padding-left: 4rpx; ? color: #FE7458; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js控制href內(nèi)容的連接內(nèi)容的變化示例
這篇文章主要介紹了使用js控制href內(nèi)容的連接內(nèi)容的變化,需要的朋友可以參考下2014-04-04js點擊返回跳轉(zhuǎn)到指定頁面實現(xiàn)過程
這篇文章主要為大家詳細(xì)介紹了js點擊返回跳轉(zhuǎn)到指定頁面實現(xiàn)過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-04-04