DDR爱好者之家 Design By 杰米
微信小程序可滑动周日历组件,供大家参考,具体内容如下
看网上周日历组件比较少,自己弄了一个,和大家分享一下。
如果样式变形,请检查是否有共用样式起冲突
展示一下效果图
在components组件文件夹下新建calendarWeek文件夹
直接上代码吧:
index.wxml
<!--components/calendarWeek/index.wxml--> <!-- 日历 --> <view class="date-choose shrink border-bottom10"> <picker mode="date" bindchange="tiaotime"><view class="data-month">{{dateYear}}{{dateMonth}}</view></picker> <swiper class="date-choose-swiper" circular="true" indicator-dots="{{false}}" current="{{swiperCurrent}}" bindchange="dateSwiperChange"> <block wx:for="{{dateList}}" wx:for-item="date" wx:key="date.id"> <swiper-item class="swiper-item"> <view class="weekday"> <block wx:for-item="weekday" wx:for="{{dateListArray}}" wx:key="{{index}}"> <text class="week">{{weekday}}</text> </block> </view> <view class="dateday"> <block wx:for="{{date.days}}" wx:for-item="day" wx:key="{{day.id}}"> <!-- <view>{{day.ids}}</view> --> <view class="day" id="{{day.id}}" bindtap="chooseDate" > <text class="{{dateCurrentStr==day.id" >{{day.day}}</text> </view> </block> </view> </swiper-item> </block> </swiper> </view> <!-- 日历 -->
index.wxss
/* components/calendarWeek/index.wxss */ .date-choose { background: #fff; overflow: hidden; height: auto; } .data-month { width: 100%; align-items: center; padding: .35rem .35rem; text-align: left; color: #333; font-size: 38rpx; } .date-choose-swiper { flex-grow: 1; height: 182rpx; } .swiper-item { display: flex; flex-direction: column; } .weekday, .dateday { display: flex; justify-content: space-between; align-items: center; text-align: center; flex-wrap: wrap; flex-grow: 1; } .week, .day { width: 14.286%; flex-basis: 14.286%; } .week{ color: #999; font-size: 24rpx; } .day text { position: relative; color: #333333; } .day .active:before {/* 圈圈 */ content: ""; position: absolute; width: 76rpx; height: 76rpx; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); border: 1px solid red; border-radius: 100%; background: red; opacity: 0.1; z-index: -1; } .day text.active { color: red } .day text.reds { color: #ff0000; } /*开始*/ .headerone { width: 100%; height: auto; font-size: 24rpx; /* margin: 0 30rpx; */ } .headerone .ra { margin-right: 20rpx; } .headerone .radio-group{ margin: 20rpx 0 20rpx 30rpx; } .headertwo { width: 100%; height: auto; font-size: 24rpx; margin-top: 10rpx; margin-bottom: 26rpx; } .headertwo .le image { width: 70rpx; height: 70rpx; border-radius: 10px; margin-left: 30rpx; margin-right: 20rpx } .headertwo .ri { flex: 1; margin-right: 30rpx; border-radius: 6px; box-shadow:0px 1px 6px 0px rgba(198,198,198,0.5); } .headertwo .ri .one{ width: 100%; padding-top: 24rpx; padding-bottom :24rpx } .headertwo .ri .one view .jiao { margin: 0 16rpx; border:15rpx solid; /* margin-top: 15rpx; */ border-color: #ffffff #ffffff #b3b3b3 #ffffff; } .xi { background: red; color: #ffffff; padding:3px 10px; border-radius: 6px 0px 0 6px; } .headertwo .ri .one view view.jiaos { margin: 0 16rpx; border:15rpx solid; margin-top: 14rpx; border-color:#b3b3b3 #ffffff #ffffff #ffffff; } .headertwo .ri .two{ width: 100%; overflow: hidden; transition: all 0.5s } .headertwo .ri .two .body{ width: 100%; /* padding-left: 60rpx; */ /* padding-right: 22rpx; */ padding-top: 24rpx; padding-bottom :24rpx; }
index.js
// components/calendarWeek/index.js var utils = require('./util.js') Component({ /** * 组件的属性列表 */ properties: { }, /** * 组件的初始数据 */ data: { valtime: 8, dateList: [], // 日历数据数组 swiperCurrent: 0, // 日历轮播正处在哪个索引位置 dateCurrent: new Date(), // 正选择的当前日期 dateCurrentStr: '', // 正选择日期的 id dateMonth: '1月', // 正显示的月份 dateListArray: ['日', '一', '二', '三', '四', '五', '六'], }, ready: function () { var that = this; var today = utils.formatTime2(new Date()); this.setData({ today, }); var d = new Date(); this.initDate(-5, 2, d); // 日历组件程序 -4左表示过去4周 右1表示过去一周 }, /** * 组件的方法列表 */ methods: { tiaotime(e) { let data = e.detail.value.split("-") var d = new Date(Number(data[0]), Number(data[1]) - 1, Number(data[2])); this.setData({ dateList: [] }) this.initDate(-5, 2, d); // 日历组件程序 -4左表示过去4周 右1表示过去一周 }, onShow: function (e) { wx.getSystemInfo({ success: (res) => { this.setData({ windowHeight: res.windowHeight, windowWidth: res.windowWidth, }); } }); }, // 日历组件部分 // ---------------------------- initDate(left, right, d) { var month = utils.addZero(d.getMonth() + 1), year = utils.addZero(d.getFullYear()), day = utils.addZero(d.getDate()); for (var i = left; i <= right; i++) { this.updateDate(utils.DateAddDay(d, i * 7));//多少天之后的 } this.setData({ swiperCurrent: 5, dateCurrent: d, dateCurrentStr: d.getFullYear() + '-' + month + '-' + day, dateMonth: month + '月', dateYear: year + '年', dateCurrentStr: year + "-" + month + "-" + day, }); }, // 获取这周从周日到周六的日期 calculateDate(_date) { var first = utils.FirstDayInThisWeek(_date); var d = { 'month': first.getMonth() + 1, 'days': [], }; for (var i = 0; i < 7; i++) { var dd = utils.DateAddDay(first, i); var day = utils.addZero(dd.getDate()), year = utils.addZero(dd.getFullYear()), month = utils.addZero(dd.getMonth() + 1); d.days.push({ 'day': day, 'id': dd.getFullYear() + '-' + month + '-' + day, 'ids': dd.getFullYear() + ',' + month + ',' + day, }); } return d; }, // 更新日期数组数据 updateDate(_date, atBefore) { var week = this.calculateDate(_date); if (atBefore) { this.setData({ dateList: [week].concat(this.data.dateList), }); } else { this.setData({ dateList: this.data.dateList.concat(week), }); } }, // 日历组件轮播切换 dateSwiperChange(e) { const lastIndex = this.data.swiperCurrent , currentIndex = e.detail.current , dateList = this.data.dateList , dateListlen = this.data.dateList.length let flag = false , key = 'lastMonth' //判断是左划还是右 // console.log(lastIndex , currentIndex) if (lastIndex > currentIndex) { lastIndex === 7 && currentIndex === 0 "年" }) }, // 获得日期字符串 getDateStr: function (arg) { if (utils.type(arg) == 'array') { return arr[0] + '-' + arr[1] + '-' + arr[2] + ' 00:00:00'; } else if (utils.type(arg) == 'date') { return arg.getFullYear() + '-' + (arg.getMonth() + 1) + '-' + arg.getDate() + ' 00:00:00'; } else if (utils.type(arg) == 'object') { return arg.year + '-' + arg.month + '-' + arg.day + ' 00:00:00'; } }, // 点击日历某日 chooseDate(e) { var str = e.currentTarget.id; // console.log(str); this.setData({ dateCurrentStr: str }); this.triggerEvent('mydata', { data: str }) }, } })
要引入util.js
// 时间格式转换 yyyy/mm/dd function formatTime(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinutes() var second = date.getSeconds() return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') } // 时间格式转换 yyyy-mm-dd function formatTime2(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinutes() var second = date.getSeconds() return [year, month, day].map(formatNumber).join('-') } function formatDate(date, split) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() return [year, month, day].map(formatNumber).join(split || '') } // 两位数自动补零 function formatNumber(n) { n = n.toString() return n[1] " ")[1]; return typeStr.substr(0, typeStr.length - 1).toLowerCase(); } module.exports = { formatTime: formatTime, formatDate: formatDate, formatTime2, DateAddDay: DateAddDay, FirstDayInThisWeek: FirstDayInThisWeek, type: Type, addZero: formatNumber, }
调用组件
//json文件调用 "usingComponents": { "calendarMonth": "../../components/calendarWeek/index" }
页面调用组件
//mydata触发的点击日期时触发的事件 可获取当前点击的日期 <calendarMonth bindmydata="mydata"></calendarMonth>
当前页面js
//js里的事件 mydata(e){ //可获取日历点击事件 let data = e.detail.data console.log(data) }
更多精彩的日历效果请学习参考专题:javascript日历插件
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]